I am using laravel 5.1 and i am using the dispatch method to push the job onto the queue. But there are two kind of jobs and i have created and two queues for that in sqs. How should i achieve this?
3 Answers
In order to specify the queue you need to call onQueue() method on your job object, e.g.:
$job = (new SendReminderEmail($user))->onQueue('emails');
$this->dispatch($job);
If you want to send the job to a connection other than default, you need to do fetch connection manually and send the job there:
$connection = Queue::connection('connection_name');
$connection->pushOn('queue_name', $job)
6 Comments
jedrzej.kurylo
What does it mean "it doesn't work"? This is how the official docs say it should be done laravel.com/docs/5.1/queues#pushing-jobs-onto-the-queue
Sameer Sheikh
"This does not push jobs to different queue "connections" as defined by your queue configuration file, but only to specific queues within a single connection. " This is what the document says
jedrzej.kurylo
Ah, so you want to change both queue and connection?
Sameer Sheikh
either change the queue or the connection..any thing would do
jedrzej.kurylo
I've updated the answer. I checked how sending to a connection/queue is implemented in Laravel, it seems that above should be enough. Please let me know if there are any issues, I haven't had a chance to test it
|
This worked for me.
//code to be used in the controller (taken from @jedrzej.kurylo above)
$job = (new SendReminderEmail($user))->onQueue('emails');
$this->dispatch($job);
I think this dispatches the job on to the queue named "emails". To execute the job dispatched on 'emails' queue:
//Run this command in a new terminal window
php artisan queue:listen --queue=emails
I'd suggest this:
app('queue')->connection('connection_name')->pushOn('queue_name', $job);
From here: In Laravel how to create a queue object and set their connection without Facade