Messenger is great. But, we've only carried it 90% of the way. It's missing key features and key things to really make it as usable as it deserves to be. Similar to #30502 , I'd like to ask for help & ideas from the community to really make it shine.
(Note: in some of these cases, we just need more review & testing to help push PR's forward).
Validate transport options with OptionsResolver
Some sort of decent dashboard (or integration) to get stats about the health of your queues
Some support, docs, something, for spinning up multiple workers, restarting them, etc
Allow 3rd parties to define virtual transports and the user them maps to real transports
Review pending doc PRs
Review pending doc issues
[Messenger] Adding failure transport support #30970 Handling & Tracking Failed Messages Support
[Messenger] RoutableMessageBus route to default bus #31288 make BusNameStamp option for migration path
[Messenger] Add a redis stream transport #30917 redis adapter
[Messenger] Allows to register handlers on a specific transport #30958 Allows to register handlers on a specific transport
[Messenger] Remove base64_encode & use addslashes #30957 Remove base64_encode from PhpSerializer
[Messenger][RFC] Generic TransportConfig stamp #30558 (and [Messenger] AMQP configuration and MessageBus::dispatch enhancements #29950 [Messenger] Add possibility to define routing key when sending message throught amqp #28772 ) Transport Configuration & priority support (and retry attempts, etc)
[Messenger] Add Null Transport #29040 , [Messenger] Add a "in-memory://" transport #29097 null transport
[Messenger] Ensure message is handled only once per handler #30020 Calling all handlers, even if one fails
[messenger] Adds a stamp to provide a routing key on message publishing #30008 multiple queues & routing key support for AMQP + routing key Envelope
[Messenger] Adding MessageCountAwareInterface to get transport message count #30757 get size of messages waiting in a transport
The default message bus name should start with messenger. #30670 make sure bus service ids are consistent
[Messenger][DX] Allow stamps to be passed directly to MessageBusInterface::dispatch() #30707 Adding argument to MessageBus::dispatch() for envelopes
Changing to MessageDecodingFailedException so that invalid messages are rejected #30756 Fix serialization problem with empty messages
[Messenger] Adding the "sync" transport to call handlers synchronously #30759 sync transport
Avoid dispatching SendMessageToTransportsEvent on redeliver #30676 dispatch send event not on retry
[Messenger] ReceiverInterface::handle() to get() & Worker with prioritized transports #30708 Move receive loop into Worker and allow supporting multiple transports
Making the serializer configurable by transport #30628 transport-by-transport serialization config
[Messenger] Add a Doctrine transport #29007 Doctrine transport (the Enqueue adapter is great, but we should support some basic adapters in core)
[Messenger] New messenger:stop-workers Command #30754 Command to stop/restart all workers
[Messenger] add welcome notice when running the command #29303 messenger:consume has no output
[Messenger] Worker events + global retry functionality #30557 ([RFC][Messenger] General message retry mechanism #27215 [Messenger][AmqpExt] Add a retry mechanism for AMQP messages #27008 ) Retry mechanism
[Messenger] Worker events + global retry functionality #30557 ([Messenger] Add "--force-consumption" option to force the consumption of messages #29132 ) Making messenger:consume not fail when a worker fails
[Messenger] Worker events + global retry functionality #30557 Hook on worker failure so it can be handled/logged
[Messenger] Changing message handling log levels to higher levels #30764 log error when messages fail on Worker
Dispatching two events when a message is sent & handled #30650 Allow stamping messages dispatched by 3rd parties via events
[Messenger] messenger:consume - bus should be determined automatically #30631 sent received messages to the correct bus automatically
[Messenger][RFC] Allow handler to choose the transport #30634 Possibly allow each handler of a message to be sent to a different transport (e.g. 1 handler async, 1 sync) and when received, only the 1 handler is executed.
[Messenger] Add a command to setup transports #29476 Command to setup transports
[Messenger] Support for handling messages after current bus is finished #28849 Doctrine transaction support
Add optional parameter prefetching for AMQP connection #30671 amqp prefetch
What else?
Messenger is great. But, we've only carried it 90% of the way. It's missing key features and key things to really make it as usable as it deserves to be. Similar to #30502, I'd like to ask for help & ideas from the community to really make it shine.
(Note: in some of these cases, we just need more review & testing to help push PR's forward).
messenger.#30670 make sure bus service ids are consistentmessenger:consumehas no output[RFC][Messenger] General message retry mechanism #27215[Messenger][AmqpExt] Add a retry mechanism for AMQP messages #27008) Retry mechanism[Messenger] Add "--force-consumption" option to force the consumption of messages #29132) Makingmessenger:consumenot fail when a worker fails[Messenger][RFC] Allow handler to choose the transport #30634 Possibly allow each handler of a message to be sent to a different transport (e.g. 1 handler async, 1 sync) and when received, only the 1 handler is executed.prefetchingfor AMQP connection #30671 amqp prefetchWhat else?