https://github.com/xp-forge/stomp
STOMP client classes for XP Framework: Publish and subscribe
https://github.com/xp-forge/stomp
php7 php8 stomp xp-framework
Last synced: about 1 year ago
JSON representation
STOMP client classes for XP Framework: Publish and subscribe
- Host: GitHub
- URL: https://github.com/xp-forge/stomp
- Owner: xp-forge
- Created: 2012-11-06T17:00:54.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2024-10-05T11:14:27.000Z (over 1 year ago)
- Last Synced: 2025-03-12T23:02:12.663Z (about 1 year ago)
- Topics: php7, php8, stomp, xp-framework
- Language: PHP
- Homepage:
- Size: 299 KB
- Stars: 2
- Watchers: 6
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
Awesome Lists containing this project
README
STOMP protocol implementation
===
[](https://github.com/xp-framework/ast/actions)
[](https://github.com/xp-framework/core)
[](https://github.com/xp-framework/core/blob/master/LICENCE.md)
[](http://php.net/)
[](http://php.net/)
[](https://packagist.org/packages/xp-forge/stomp)
About
---
STOMP is a network protocol to talk to message brokers such as [Apache ActiveMQ](http://activemq.apache.org/) or [RabbitMQ](http://rabbitmq.org).
The STOMP specification can be found at http://stomp.github.io/.
Examples
---
### Producer
A message producer
```php
use peer\stomp\{Connection, SendableMessage};
$conn= new Connection('stomp://localhost:61613/');
$conn->connect();
$conn->getDestination('/queue/producer')->send(
new SendableMessage('Message contents', 'text/plain')
);
```
### Consumer
A simple message consumer (subscriber):
```php
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();
```
### Multi-endpoint failover
A consumer with a broker network may connect to any host when available:
```php
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 connection URL
The URL specifies the options how and where to connect:
* `protocol` should be `stomp` or `stomp+ssl`
* `host` is the hostname to connect
* `port` 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