Adding a middleware to allow you to "hook into" the stamping process#30646
Closed
weaverryan wants to merge 1 commit intosymfony:masterfrom
Closed
Adding a middleware to allow you to "hook into" the stamping process#30646weaverryan wants to merge 1 commit intosymfony:masterfrom
weaverryan wants to merge 1 commit intosymfony:masterfrom
Conversation
36 tasks
feb0c77 to
aa0e880
Compare
OskarStark
reviewed
Mar 22, 2019
Contributor
OskarStark
left a comment
There was a problem hiding this comment.
Nice contribution, thanks Ryan 👌🏻
| /** | ||
| * Apply new stamps and return the new envelope. | ||
| */ | ||
| public function stampEnvelope(Envelope $envelope): Envelope; |
Contributor
There was a problem hiding this comment.
I would propose stamp(...) because stamp and envelope are already mentioned in the interface name
Contributor
Author
|
Closing in favor of #30650 - please check that one out! |
fabpot
added a commit
that referenced
this pull request
Mar 23, 2019
…d (weaverryan) This PR was merged into the 4.3-dev branch. Discussion ---------- Dispatching two events when a message is sent & handled | Q | A | ------------- | --- | Branch? | master | Bug fix? | no | New feature? | yes | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | none | License | MIT | Doc PR | TODO Alternative to #30646. This uses a more generic system, so you could do anything when a message is sent. The main use-case is when a message is dispatched by a 3rd party. I didn't try to add *exhaustive* events everywhere: I added an event for a very specific use-case: When a message is dispatched by a 3rd party, being able to add stamps (e.g. `DelayStamp` or a future `AmqpRoutingKeyStamp` before the message is sent. Example: ```php class MailerMessageSendToTransportEventSubscriber implements EventSubscriberInterface { public function onSendMessage(SendMessageToTransportsEvent $event) { $envelope = $event->getEnvelope(); if (!$envelope->getMessage() instanceof SomeMailerMessage) { return; } $event->setEnvelope($envelope->with(new AmpqRoutingKeyStamp('mailer-route'))); } public static function getSubscribedEvents() { return [SendMessageToTransportsEvent::class => 'onSendMessage']; } } ``` Along with #30557, we will now have the following events, regarding async messages: * Event when a message is sent to transports (this PR) * Event when a message is received from transport, but before handling it * Event when a message is received from transport and after handling it Commits ------- a7ad1b4 Dispatching two events when a message is sent & handled
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
When a 3rd party dispatches a message, the user may need to apply some custom stamps to that message - especially stamps that configure how that message is handled by the transport. We already have one simple example of this from #30557 - the
DelayStamp. This would allow the user to very easily (without needing to create a middleware and register it) add this stamp to a 3rd party message, or future stamps (e.g. stamps for transport/queue priority).