A PHP abstraction for the pub-sub pattern
composer require superbalist/php-pubsub
- Local (bundled)
- /dev/null (bundled)
- Redis - https://github.com/Superbalist/php-pubsub-redis
- Kafka - https://github.com/Superbalist/php-pubsub-kafka
- Google Cloud - https://github.com/Superbalist/php-pubsub-google-cloud
- HTTP - https://github.com/Superbalist/php-pubsub-http
Want to get started quickly? Check out some of these integrations:
$adapter = new \Superbalist\PubSub\Adapters\LocalPubSubAdapter();
// consume messages
$adapter->subscribe('my_channel', function ($message) {
var_dump($message);
});
// publish messages
$adapter->publish('my_channel', 'Hello World!');
// publish multiple messages
$messages = [
'message 1',
'message 2',
];
$adapter->publishBatch('my_channel', $messages);
You can easily write your own custom adapter by implementing the PubSubAdapterInterface interface.
Your adapter must implement the following methods:
/**
* Subscribe a handler to a channel.
*
* @param string $channel
* @param callable $handler
*/
public function subscribe($channel, callable $handler);
/**
* Publish a message to a channel.
*
* @param string $channel
* @param mixed $message
*/
public function publish($channel, $message);
/**
* Publish multiple messages to a channel.
*
* @param string $channel
* @param array $messages
*/
public function publishBatch($channel, array $messages);
The library comes with examples for all adapters and a Dockerfile for running the example scripts.
Run make up
.
You will start at a bash
prompt in the /opt/php-pubsub
directory.
If you need another shell to publish a message to a blocking consumer, you can run docker-compose run php-pubsub /bin/bash
To run the examples:
$ php examples/LocalExample.php