A symfony messenger transport implementation for redis streams.
NOTE: Most of the logic has moved to the Core Symfony Messenger component in 4.3. So this bundle is not longer a requirement to use messenger with redis streams. You can now use the
redis://instead ofredis-stream://and remove this bundle from your requirements.
- PHP:
^7.1- Redis Extension:
^4.2
- Redis Extension:
- Redis Server:
^5.0
| Symfony Messenger Version | Bundle Version |
|---|---|
| 4.2 | 1.0 |
| 4.3 | 1.1 |
When upgrading to symfony 4.3 you should replace this bundle
with the symfony redis:// transport and remove the bundle
from your requirements.
You need composer to install this bundle to your symfony application.
composer require handcraftedinthealps/redis-transport-bundleWhen using the symfony/framework-bundle you can configure the following:
# config/packages/framework.yaml
framework:
messenger:
routing:
'HandcraftedInTheAlps\Bundle\RedisTransportBundle\Message\DomainEventMessage':
senders: ['redis_stream']
transports:
redis_stream: 'redis-stream://127.0.0.1:6379/my_stream/my_group/my_consumer'You can then send a DomainEventMessage or your custom Message over the redis stream:
use HandcraftedInTheAlps\Bundle\RedisTransportBundle\Message\DomainEventMessage;
$this->messageBus->dispatch(
new DomainEventMessage(
'mountain.modified', // the custom event action
'mountain', // the model which has been changed
'1', // the model id or uuid
[ // the model payload
'id' => '1',
'name' => 'Piz Buin',
'height' => 3312,
]
)
);And you can consume the messages with:
bin/console messenger:consume-messages redis_streamHave also a look at the messenger component documentation and messenger usage documentation.
Messages in streams won't be removed by default. Therefor this bundle provides a command:
bin/console redis-transport:trim <redis-dsn> --maxlen 1000