Exemple #1
0
 /**
  * Initializes the message queue class
  *
  * @param \Stomp\Stomp $client Stomp object
  * @param string $queue Message queue name
  * @throws \Aimeos\MW\MQueue\Exception
  */
 public function __construct(\Stomp\Stomp $client, $queue)
 {
     if ($client->subscribe($queue) === false) {
         throw new \Aimeos\MW\MQueue\Exception(sprintf('Unable to subscribe to queue "%1$s"', $queue));
     }
     $this->client = $client;
     $this->queue = $queue;
 }
Exemple #2
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);
 }
 public function testAbortTransaction()
 {
     $this->assertTrue($this->Stomp->connect());
     $this->assertTrue($this->Stomp->begin('my-id'));
     $this->assertTrue($this->Stomp->send('/queue/test', 'test t-id', array('transaction' => 'my-id')));
     $this->assertTrue($this->Stomp->abort('my-id'));
     $this->assertTrue($this->Stomp->subscribe('/queue/test'));
     $this->Stomp->getConnection()->setReadTimeout(array(1, 0));
     $frame = $this->Stomp->readFrame();
     $this->assertFalse($frame);
 }
Exemple #4
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, null, null, true);
     $frame = $consumer2->readFrame();
     $this->assertEquals($frame->body, 'test message');
     if ($frame != null) {
         $consumer2->ack($frame);
     }
     // yes, that's active mq! you must unsub two times...
     // http://mail-archives.apache.org/mod_mbox/activemq-dev/201205.mbox/raw/
     //        %3C634996273.21688.1336051731428.JavaMail.tomcat@hel.zones.apache.org%3E/
     $consumer2->unsubscribe($this->topic);
     // that took me some time...
     $consumer2->unsubscribe($this->topic, null, null, true);
     $consumer2->disconnect();
 }
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// include a library
use Stomp\Stomp;
// make a connection
$con = new Stomp('tcp://localhost:61613');
// connect
$con->connect();
$con->setReadTimeout(1);
// subscribe to the queue
$con->subscribe('/queue/transactions', array('ack' => 'client', 'activemq.prefetchSize' => 1));
// try to send some messages
$con->begin('tx1');
for ($i = 1; $i < 3; $i++) {
    $con->send('/queue/transactions', $i, array('transaction' => 'tx1'));
}
// if we abort transaction, messages will not be sent
$con->abort('tx1');
// now send some messages for real
$con->begin('tx2');
echo "Sent messages {\n";
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// include a library
use Stomp\Stomp;
use Stomp\Message\Map;
// make a connection
$con = new Stomp('tcp://localhost:61613');
// connect
$con->connect();
// send a message to the queue
$body = array('city' => 'Belgrade', 'name' => 'Dejan');
$header = array();
$header['transformation'] = 'jms-map-json';
$mapMessage = new Map($body, $header);
$con->send('/queue/test', $mapMessage);
echo 'Sending array: ';
print_r($body);
$con->subscribe('/queue/test', array('transformation' => 'jms-map-json'));
/** @var Map $msg */
$msg = $con->readFrame();
// extract
if ($msg != null) {
 /**
  * Tests Stomp->connect()
  */
 public function testFailoverConnect()
 {
     $this->assertTrue($this->Stomp->connect());
 }
Exemple #8
0
 public function testConnectOnApollo()
 {
     $this->assertTrue($this->client->connect('admin', 'password'), 'Expected reachable broker.');
     $this->assertInstanceOf('\\Stomp\\Protocol\\Apollo', $this->client->getProtocol(), 'Expected a Apollo broker.');
 }
Exemple #9
0
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * 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 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 Stomp\Stomp;
use 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";
}
$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) {
Exemple #10
0
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// include a library
use Stomp\Stomp;
use Stomp\Message\Bytes;
// make a connection
$con = new Stomp('tcp://localhost:61613');
// connect
$con->connect();
// send a message to the queue
$body = 'test';
$bytesMessage = new Bytes($body);
$con->send('/queue/test', $bytesMessage);
echo 'Sending message: ';
print_r($body . "\n");
$con->subscribe('/queue/test');
$msg = $con->readFrame();
// extract
if ($msg != null) {
    echo 'Received message: ';
    print_r($msg->body . "\n");
    // mark the message as received in the queue
 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();
 }
Exemple #12
0
// 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 durable consumer
$consumer->unsubscribe('/topic/test');
$consumer->disconnect();
echo "Disconnecting consumer\n";
// send a message while consumer is disconnected
$producer->send('/topic/test', 'test-2');
echo "Message 'test-2' sent to topic\n";
// reconnect the durable consumer
$consumer = new Stomp('tcp://localhost:61613');
$consumer->clientId = 'test';
$consumer->connect('admin', 'password');
$consumer->subscribe('/topic/test', null, true, true);
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
if ($consumer->getProtocol() instanceof \Stomp\Protocol\ActiveMq) {
Exemple #13
0
 public function testGetConnectionReturnsUsedConnection()
 {
     $connection = new Connection('tcp://myhost');
     $stomp = new Stomp($connection);
     $this->assertSame($connection, $stomp->getConnection(), 'getConnection must return passed connection instance.');
 }
 /**
  * Tests Stomp->connect()
  */
 public function testFailoverConnect()
 {
     $this->assertTrue($this->Stomp->connect('admin', 'password'));
 }