Skip to content

[DEPRECATED] Now part of symfony/messenger since 4.3. Use that implementation instead!

License

Notifications You must be signed in to change notification settings

handcraftedinthealps/RedisTransportBundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

74f3ab4 · Jan 17, 2024

History

30 Commits
Jan 17, 2024
Jan 17, 2024
Aug 1, 2022
Aug 1, 2022
Jul 30, 2019
Jan 17, 2024
Aug 1, 2022
Aug 1, 2022
Jan 17, 2024
Feb 27, 2020
Nov 20, 2018
Jan 17, 2024
Nov 20, 2018
Jul 8, 2019
Jan 17, 2024
Jan 17, 2024
Aug 1, 2022
Aug 1, 2022

Repository files navigation

RedisTransportBundle ⛰

GitHub license GitHub tag (latest SemVer) CircleCI

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 of redis-stream:// and remove this bundle from your requirements.

Requirements

  • PHP: ^7.1
    • Redis Extension: ^4.2
  • Redis Server: ^5.0

Symfony compatibility

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.

Installation

You need composer to install this bundle to your symfony application.

composer require handcraftedinthealps/redis-transport-bundle

Configuration

Symfony

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 messenger component documentation and messenger usage documentation.

Commands

Messages in streams won't be removed by default. Therefor this bundle provides a command:

bin/console redis-transport:trim <redis-dsn> --maxlen 1000