9

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 3

12

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)
Sign up to request clarification or add additional context in comments.

6 Comments

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
"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
Ah, so you want to change both queue and connection?
either change the queue or the connection..any thing would do
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
|
8

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

2 Comments

sorry haven't tested it
How can we print the log of this onQueue, is there any way to do this ?
2

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.