[12.x] Add ability to default the mailable and notifcation queue #57712
+92
−14
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.
The other day I was trying to find a nice way to make all my Mailables go to one queue, and Notifications to go to another.
Which, got me thinking rather than creating new base classes to extend them for all my mail / notifications classes- and then using
onQueue/ settings thequeueproperty, I thought it could be nice to have this as a static property so it can be setup in the service provider and defaulted.This also means if anyone creates a new Mailable, or Notification in my application - there's no ability to forget to extend the base class (as there isnt one!)
This means we can do something like the below and not worry about the queue as it'll default to what we set:
Mail::to($user->email)->queue(new X);Notification::send($users, new InvoicePaid($invoice));I don't think this is a breaking change, as it's null by default so continues on as normal if its not set.
Let me know if there's any adjustments needed / a better way 🫡
Something like this may also work for Jobs, and could sit in a config - but one step at a time.