示例#1
0
 /**
  * Tests Stomp->connect(), send(), and subscribe() - out of order. the messages should be received in FIFO order.
  */
 public function testAsyncSub()
 {
     $this->assertTrue($this->Stomp->connect());
     $this->assertTrue($this->Stomp->send('/queue/test', 'test 1'));
     $this->assertTrue($this->Stomp->send('/queue/test', 'test 2'));
     $this->assertTrue($this->Stomp->subscribe('/queue/test'));
     $frame = $this->Stomp->readFrame();
     $this->assertEquals($frame->body, 'test 1', 'test 1 was not received!');
     $this->Stomp->ack($frame);
     $frame = $this->Stomp->readFrame();
     $this->assertEquals($frame->body, 'test 2', 'test 2 was not received!');
     $this->Stomp->ack($frame);
 }
示例#2
0
 /**
  * @return Stomp
  */
 public function getStomp()
 {
     if (!$this->stomp->isConnected()) {
         $this->stomp->connect(Arr::get($this->credentials, 'username', ''), Arr::get($this->credentials, 'password', ''));
     }
     return $this->stomp;
 }
示例#3
0
 /**
  * Tests Stomp->unsubscribe()
  */
 public function testUnsubscribe()
 {
     if (!$this->Stomp->isConnected()) {
         $this->Stomp->connect();
     }
     $this->Stomp->subscribe($this->queue);
     $this->assertTrue($this->Stomp->unsubscribe($this->queue));
 }
示例#4
0
 private function connectSTOMP()
 {
     try {
         $stomp = new Stomp('tcp://' . $this->stompserver . ':' . $this->stompport);
         $stomp->clientId = $this->stompclientid;
         $stomp->connect();
     } catch (StompException $e) {
         $this->errors[] = $e->getMessage();
         return null;
     }
     return $stomp;
 }
示例#5
0
 /**
  * {@inheritdoc}
  */
 public function transport(SourceInterface $source)
 {
     if (!$this->client->isConnected()) {
         $this->client->connect();
         $this->client->subscribe((string) $source);
     }
     $message = $this->client->readFrame();
     $table = $this->getTableFactory()->create();
     if ($message != NULL) {
         $this->client->ack($message);
     }
     if (!$message) {
         return $table;
     }
     $row = $table->getNewRow();
     $row->set('command', $message->command);
     if (!empty($message->headers)) {
         foreach ($message->headers as $key => $value) {
             $row->set($key, $value);
         }
     }
     $row->set('body', $message->body);
     return $table;
 }
 /**
  * Tests Stomp->connect()
  */
 public function testFailoverConnect()
 {
     $this->assertTrue($this->Stomp->connect());
 }
示例#7
0
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
 To successfully run this example, you must first start the broker with stomp+ssl enabled.
 You can do that by executing:
 $ ${ACTIVEMQ_HOME}/bin/activemq xbean:activemq-connectivity.xml
 Then you can execute this example with:
 $ php connectivity.php
*/
// include a library
use FuseSource\Stomp\Stomp;
// make a connection
$con = new Stomp("failover://(tcp://localhost:61614,ssl://localhost:61612)?randomize=false");
// connect
$con->connect();
// send a message to the queue
$con->send("/queue/test", "test");
echo "Sent message with body 'test'\n";
// subscribe to the queue
$con->subscribe("/queue/test");
// receive a message from the queue
$msg = $con->readFrame();
// do what you want with the message
if ($msg != null) {
    echo "Received message with body '{$msg->body}'\n";
    // mark the message as received in the queue
    $con->ack($msg);
} else {
    echo "Failed to receive a message\n";
}
示例#8
0
 To successfully run this example, you must first start the broker with security enabled.
 You can do that by executing:
 $ ${ACTIVEMQ_HOME}/bin/activemq xbean:activemq-security.xml
 Then you can execute this example with:
 $ php security.php
*/
// include a library
use FuseSource\Stomp\Stomp;
use FuseSource\Stomp\Exception\StompException;
// make a connection
$con = new Stomp("tcp://localhost:61613");
// use sync operations
$con->sync = true;
// connect
try {
    $con->connect("dejan", "test");
} catch (StompException $e) {
    echo "dejan cannot connect\n";
    echo $e->getMessage() . "\n";
    echo $e->getDetails() . "\n\n\n";
}
$con->connect("guest", "password");
// send a message to the queue
try {
    $con->send("/queue/test", "test");
    echo "Guest sent message with body 'test'\n";
} catch (StompException $e) {
    echo "guest cannot send\n";
    echo $e->getMessage() . "\n";
    echo $e->getDetails() . "\n\n\n";
}
 /**
  * Connect to Stomp server, if not connected.
  *
  * @throws \FuseSource\Stomp\Exception\StompException
  */
 protected function connect()
 {
     if (!$this->stomp->isConnected()) {
         $this->stomp->connect(Arr::get($this->credentials, 'username', ''), Arr::get($this->credentials, 'password', ''));
     }
 }
示例#10
0
 protected function consume()
 {
     $consumer2 = new Stomp($this->broker);
     $consumer2->sync = false;
     $consumer2->clientId = "test";
     $consumer2->setReadTimeout(1);
     $consumer2->connect("system", "manager");
     $consumer2->subscribe($this->topic);
     $frame = $consumer2->readFrame();
     $this->assertEquals($frame->body, "test message");
     if ($frame != null) {
         $consumer2->ack($frame);
     }
     $consumer2->disconnect();
 }
示例#11
0
} else {
    echo "Failed to receive a message\n";
}
sleep(1);
// disconnect durable consumer
$consumer->unsubscribe("/topic/test");
$consumer->disconnect();
echo "Disconnecting consumer\n";
// send a message while consumer is disconnected
// note: only persistent messages will be redelivered to the durable consumer
$producer->send("/topic/test", "test1", array('persistent' => 'true'));
echo "Message 'test1' sent to topic\n";
// reconnect the durable consumer
$consumer = new Stomp("tcp://localhost:61613");
$consumer->clientId = "test";
$consumer->connect();
$consumer->subscribe("/topic/test");
echo "Reconnecting consumer\n";
// receive a message from the topic
$msg = $consumer->readFrame();
// do what you want with the message
if ($msg != null) {
    echo "Message '{$msg->body}' received from topic\n";
    $consumer->ack($msg);
} else {
    echo "Failed to receive a message\n";
}
// disconnect
$consumer->unsubscribe("/topic/test");
$consumer->disconnect();
$producer->disconnect();
示例#12
0
 protected function consume()
 {
     $consumer2 = new Stomp($this->broker);
     $consumer2->sync = true;
     $consumer2->clientId = "test";
     $consumer2->setReadTimeout(1);
     $consumer2->connect($this->login, $this->password);
     $consumer2->subscribe($this->topic, array('persistent' => 'true'));
     $frame = $consumer2->readFrame();
     $this->assertEquals($frame->body, "test message");
     if ($frame != null) {
         $consumer2->ack($frame);
     }
     $consumer2->disconnect();
 }