STOMP is a network protocol to talk to message brokers such as Apache ActiveMQ or RabbitMQ.
The STOMP specification can be found at http://stomp.github.io/.
A message producer
use peer\stomp\{Connection, SendableMessage};
$conn= new Connection('stomp://localhost:61613/');
$conn->connect();
$conn->getDestination('/queue/producer')->send(
new SendableMessage('Message contents', 'text/plain')
);
A simple message consumer (subscriber):
use peer\stomp\{Connection, Subscription};
$conn= new Connection('stomp://localhost:61613/');
$conn->connect();
$conn->subscribeTo(new Subscription('/queue/producer', function($message) {
Console::writeLine('---> Received message: ', $message);
$message->ack();
}));
$conn->consume();
A consumer with a broker network may connect to any host when available:
use peer\stomp\{Connection, Subscription, Failover};
$nodes= ['stomp://one.example.com:61613/', 'stomp://two.example.com:61613/'];
// Connect randomly to one or the other
$conn= new Connection(Failover::using($nodes)->byRandom());
$conn->connect();
$conn->subscribeTo(new Subscription('/queue/producer', function($message) {
Console::writeLine('---> Received message: ', $message);
$message->ack();
}));
$conn->consume();
For more examples, please see the examples/
directory.
The URL specifies the options how and where to connect:
protocol
should bestomp
orstomp+ssl
host
is the hostname to connectport
is the port to connect (default: 61613)user
,pass
can be given in the URL and will be used for authentication- Supported parameters:
vhost
- virtual host name, since STOMP 1.1 (eg.?vhost=example.com
)versions
- to specify list of supported versions (eg.?versions=1.0,1.1
); default is to support 1.0, 1.1