superbalist / php-pubsub
An adapter based PubSub package for PHP
Installs: 523 060
Dependents: 21
Suggesters: 0
Security: 0
Stars: 45
Watchers: 37
Forks: 4
Open Issues: 1
Requires
- php: >=5.6.0
Requires (Dev)
- mockery/mockery: ^0.9.5
- phpunit/phpunit: ^5.5
This package is auto-updated.
Last update: 2024-08-12 00:20:29 UTC
README
A PHP abstraction for the pub-sub pattern
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:
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.
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);
Examples
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