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-bundle
When 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_stream
Have also a look at the the messenger component documentation and messenger usage documentation.
Messages in streams wont be removed by default. Therefor this bundle provides a command:
bin/console redis-transport:trim <redis-dsn> --maxlen 1000