2017-08-28 3 views
0

J'ai essayé de faire le travail de file d'attente de Laravel pendant des heures et en vain je n'ai pas idée de ce qui se passe; Je pense que les files d'attente fonctionnent car elles sont publiées dans la base de données, mais ce que je ne comprends pas, c'est pourquoi elles ne sont pas en train de s'exécuter et de poster sur mailtrap.Laravel file d'attente de courrier ne pas poster à mailtrap

J'ai mis mon dossier .env à database

QUEUE_DRIVER=database

Mon contrôleur:

$mailQueue = (new SendNotification($contact)) 
        ->delay(5); 

dispatch($mailQueue); 

Mon Envoyer une notification d'emploi:

<?php 

namespace App\Jobs; 

use Illuminate\Bus\Queueable; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 
use Illuminate\Foundation\Bus\Dispatchable; 

use Mail; 
use App\Mail\Notification; 

class SendNotification implements ShouldQueue 
{ 
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; 

    protected $contact; 

    /** 
    * Create a new job instance. 
    * 
    * @return void 
    */ 
    public function __construct($contact) 
    { 
     $this->contact = $contact; 
    } 

    /** 
    * Execute the job. 
    * 
    * @return void 
    */ 
    public function handle() 
    { 
     $notification = (new Notification($contact)); 

     Mail::to('email') 
       ->queue($notification); 
    } 
} 

Enfin, mon Objets inadmissibles:Assez basique vraiment, mais je ne comprends pas pourquoi ce n'est pas poster ou envoyer à un piège Mail; Bien que ma table Jobs soit remplie de files d'attente qui ne seront pas publiées.

Est-ce que quelqu'un a déjà eu ce problème? si oui, n'importe qui sait quelle est la solution - j'ai essayé php artisan queue:work et php artisan queue:listen mais ils ne publient rien dehors sur le terminal.

MISE À JOUR: J'ai essayé php artisan queue:work --queue=high, emails la sortie était

Processing: App\Mail\Notification

, mais il n'a toujours pas envoyé de mail à Mailtrap.

+0

Avez-vous vérifié votre journal pour les erreurs? './storage/logs/laravel.log' – Pitchinnate

Répondre

0

Vous ne semblez pas avoir défini un public function via() dans votre notification. Vous devez spécifier comment vous souhaitez que la notification soit envoyée.

public function via($notifiable) 
{ 
    return ['mail']; 
} 

Les notifications s'étendent normalement Illuminate\Notifications\Notification. Nevermind ressemble à ce que vous n'utilisez pas le système de notification intégré.

Je suppose que le problème est avec ceci:

$mailQueue = (new SendNotification($contact)) 
        ->delay(5); 

Si vous regardez la documentation, il passe un objet de carbone dans le délai.

$job = (new ProcessPodcast($podcast)) 
    ->delay(Carbon::now()->addMinutes(10)); 
+0

J'ai essayé ce @Pitchinnate mais ça ne marche toujours pas - j'ai même fait un projet séparé juste pour tester la file d'attente mais tout ce qu'il fait est de 'traiter' et de ne jamais envoyer - je devine il n'a pas réussi à poster mais je ne sais pas pourquoi. J'ai également rendu un autre mailable pour envoyer le courrier à un utilisateur différent après la fin de la file d'attente mais la file d'attente s'ajoute à la base de données de jobs mais ne la publie jamais pendant que l'autre courrier n'est pas envoyé. – AwakenerOfDusk

+0

REMARQUE: j'utilise une classe mailable au lieu d'une classe de notification, car c'est plus facile, d'une certaine manière. J'ai également découvert que ma classe 'SendNotification' avait été traitée mais que la classe Mailiable était toujours en cours de traitement. Je suppose que c'est là que l'état d'échec se produit. '[29/08/2017 02:16:28] Traitement: App \ Jobs \ SendNotification' ' [29/08/2017 02:16:28] transformés: App \ Jobs \ SendNotification' '[ 2017-08-29 02:16:28] Traitement: App \ Mail \ Notification' – AwakenerOfDusk

+0

Merci pour la suggestion, mais ce que j'ai essayé de déboguer les messages d'erreur utilisait 'php artisan queue: listen --tries = 3' il a posté à échoué après la troisième tentative et la sortie d'un journal d'erreur spécifique! – AwakenerOfDusk