Laravel 4 + Iron Mq: Queues fired but the mail is not sent

This is the situation:

I have a Laravel 4 app with Iron mq installed in order to speed up the process.
It is possible to book a car and to register in the site. In both cases a mail is sent.
The problem is that after installing Iron mq the mail are not sent anymore. All the rest is done, inserting data in the database, but the mails sending no.
In Iron mq dashboard the queues are instead regularly received and apparently fired..

This is the route:

 /*  CARS  */

Route::get('focus', function()
 {
return View::make('iframe');
 });
Route::post('focus', '<a href="https://getridbug.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ecbe898b859f989e8d988583829faf8382989e838080899eac8e83838785828b">[email protected]</a>');


Route::get('sharan', function()
{
return View::make('iframe2');
 });


Route::get('passat', function()
{
return View::make('iframe5');
});

// Route::post('passat', '<a href="https://getridbug.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="134176747a60676172677a7c7d60507c7d67617c7f7f766153717c7c787a7d74">[email protected]</a>');

 Route::post('passat', function()
 {
return Queue::marshal();    
 });

/*  USER REGISTRATION */

Route::get('register', '<a href="https://getridbug.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6c240301092f0302181e030000091e2c0b09183e090b051f18091e">[email protected]</a>');
Route::post('register', '<a href="https://getridbug.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="eaa285878fa985849e988586868f98aa9a85999eb88f8d83999e8f98">[email protected]</a>');

Right now the process of book a car is faster, from 8/9 sec to 3 sec. It means that Iron is working. Though is strange that i had make the Queue::marshall() for only one of the post route, and it works for all three..
The user registration is also faster, without any queue::marshall()
But the point is that in the both cases no email is sent.

This is the mail sending code:

 return Mail::queue($this->view, $this->data, function($message) use($self)
{
   $message->to($self->email, $self->to)->subject($self->subject);

});

With Mail::send it works (but terribly slow), with Mail::queue is faster but the email is not sent.

The main questions are:

Why the mail are not sent?
The SMTP settings should not change, right?

What is the proper place for Queue::marshall() ?
If for the POST of the registration i must call the proper method
Route::post(‘register’, ‘[email protected]’);
Then, where i have to put the Queue::marshall() ?
Is possible to make a double route? Call the method and make Queue::marshall?

Thank you very much!
Already for a previous site had the same problems and never resolve.

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

The objective of this marshal call is just to make your application process your queues jobs. So, create a separate route for your marshal, it will be used only by Iron:

Route::post('queues/marshal', function()
{
    return Queue::marshal();    
});

Then you just have to subscribe your marshal url in your Iron queue:
http://yoursite.com/queues/marshal


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x