[Messenger] Add middleware to stop all workers on exception #35481
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is an alternative to #35453. It will fix #34414 and fix #35360.
If any of these exceptions is thrown when handling a message in "command_bus" we will stop all workers.
You may also be more defensive:
This will avoid situation where you have 100 messages on the queue, and when handling message 5 it causes an exception that closes the EntityManager. As a result the other 95 messages will also fail because "The EntityManager is closed."
Drawback of this approach. This will stop ALL workers, even workers in other threads. It will also stop all workers even if the message was handled synchronously.
This is a draft PR, which means that Im not done with the implementation. I want some feedback before I add tests, documentation and possibly trying to fix some of the drawbacks.