php-pubsub
A PHP abstraction for the pub-sub pattern, (*1)
, (*2)
Installation
composer require superbalist/php-pubsub
Adapters
- 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
Integrations
Want to get started quickly? Check out some of these integrations:, (*3)
- Laravel - https://github.com/Superbalist/laravel-pubsub
Usage
$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);
Writing an Adapter
You can easily write your own custom adapter by implementing the PubSubAdapterInterface interface., (*4)
Your adapter must implement the following methods:, (*5)
/**
* 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);
Examples
The library comes with examples for all adapters and a Dockerfile for
running the example scripts., (*6)
Run make up
., (*7)
You will start at a bash
prompt in the /opt/php-pubsub
directory., (*8)
If you need another shell to publish a message to a blocking consumer, you can run docker-compose run php-pubsub /bin/bash
, (*9)
To run the examples:, (*10)
$ php examples/LocalExample.php