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 PR implements middleware support on queued notifications.
Why?
Very commonly, I run into rate limit issues with notifications, and ideally, I'd have the rate limiting logic bound with my notification. Notifications already support queued delivery through the use of the
ShouldQueue
interface and theQueable
trait, so we are already leaning into jobs.Use case: rate limiting
Rate limiting a notification requires the
InteractsWithQueue
trait to be imported, which allows the job to release itself onto the queue. In addition to that, amiddleware()
method should be added to the notification.Other use cases
Personally, I have not had other use cases for notification middleware other than rate limiting, which is why I did consider building a notification-specific implementation of rate limiting. However, I feel like sticking to the existing syntax is better, especially considering the fact that queued notifications are already leaning on jobs.
Even so, middleware might unlock some new additional capabilities, such as content manipulation or conditional sending.