Swarrot bridge for Symfony Message component
Open Issues: 0
This package is auto-updated.
Last update: 2023-03-29 00:48:15 UTC
This bridge allows you to use the great designed Swarrot library to consume and produce messages to various message brokers.
- Install Swarrot's bridge
composer req sroze/swarrot-bridge:dev-master
- Configure Swarrot Bundle within your application.
# config/packages/swarrot.yaml swarrot: default_connection: rabbitmq connections: rabbitmq: host: 'localhost' port: 5672 login: 'guest' password: 'guest' vhost: '/' consumers: my_consumer: processor: app.message_processor middleware_stack: - configurator: swarrot.processor.signal_handler - configurator: swarrot.processor.max_messages extras: max_messages: 100 - configurator: swarrot.processor.doctrine_connection extras: doctrine_ping: true - configurator: swarrot.processor.doctrine_object_manager - configurator: swarrot.processor.exception_catcher - configurator: swarrot.processor.ack messages_types: my_publisher: connection: rabbitmq # use the default connection by default exchange: my_exchange
Important note: Swarrot will not automatically create the exchanges, queues and bindings for you. You need to manually configure these within RabbitMq (or another connector you use).
- Register producer and processor.
# config/services.yaml services: # ... app.message_producer: class: Sam\Symfony\Bridge\SwarrotMessage\SwarrotProducer arguments: - "@swarrot.publisher" - "@message.transport.default_encoder" - my_publisher app.message_processor: class: Sam\Symfony\Bridge\SwarrotMessage\SwarrotProcessor arguments: - "@message_bus" - "@message.transport.default_decoder"
See that the processor is something Swarrot-specific. As Swarrot's power is to consume messages, we won't use the Message component's command in this context but Swarrot's command. We've configured Swarrot to use this processor in the previous file's configuration.
- Route your messages to the bus
# config/packages/framework.yaml message: routing: 'App\Message\MyMessage': app.message_producer
- Consume your messages!
bin/console swarrot:consume:my_consumer queue_name_you_created