2016-12-25 1 views
4

Ich habe Laravel 5 Projekt. Dies ist ein Multi-Tenant-Projekt, daher habe ich ein Ordnerprojekt mit mehreren Datenbanken.läuft Laravel Warteschlange mit mehreren Datenbank

Wenn ich 10 verwende, funktioniert es nur mit der aktuellen Datenbankeinrichtung. Ich verwende den Warteschlangentreiber database, so dass jeder Mandant eine eigene Benachrichtigungstabelle hat. Wie richte ich einen Warteschlangenlistener ein, um alle Datenbankjobs zu überprüfen?

Antwort

4

Wenn Sie weiterhin den database Treiber verwenden möchten, würde ich vorschlagen, eine andere Datenbank einzurichten, die alle Ihre Jobs in der Warteschlange und fehlgeschlagene Jobs enthält.

Obwohl es nicht in der Konfiguration oder in der Dokumentation erwähnt wird, sieht es nach einem Blick auf den Code aus, dass Sie in der Lage sein sollten, einen connection Parameter zu Ihrer Warteschlangenkonfiguration hinzuzufügen, und dann die Warteschlange mit dem interagieren Datenbank, die von dieser Verbindung angegeben wird.

'connections' => [ 
    // your existing connections 

    'queue' => [ 
     'driver' => 'mysql', 
     'database' => 'your-queue-database', 
     // rest of connection information (host, port, etc) 
    ], 
], 

Dann in Ihren config/queue.php, informieren Sie Ihre Datenbank-Warteschlange Ihre neue Verbindung zu verwenden:

Also, in Ihren config/database.php, eine neue Verbindung für Ihre Warteschlangendatenbank definiert

'connections' => [ 
    'database' => [ 
     'driver' => 'database', 
     'connection' => 'queue', // connection name from database config 
     'table' => 'jobs', 
     'queue' => 'default', 
     'retry_after' => 90, 
    ], 
] 

Die Eine andere Option wäre, zu einem anderen Warteschlangentreiber zu wechseln. Richten Sie redis, sqs oder beanstalk ein.

+0

hi, danke für die Antwort .. beide funktionieren, aber wenn ich 'redis 'benutze, um den aktuellen ausstehenden Job oder den fehlgeschlagenen Job zu sehen, wie in' Datenbank '. Ich weiß also, ob etwas nicht stimmt oder ein Job nicht wie erwartet funktioniert. Übrigens, ich benutze Laravel-Schmiede für Server-Setup. – martiendt

+0

@martiendt Unabhängig davon, welche Art von Warteschlange Sie verwenden, werden fehlgeschlagene Jobs in der Tabelle "failed_jobs" in Ihrer Datenbank gemeldet, wenn sie die maximale Anzahl der vom Warteschlangen-Worker zugelassenen Versuche überschreiten. – patricus

+0

also, wenn ich redis verwenden möchte, muss ich auch meine Warteschlange Datenbank einrichten? ok danke @patricus ich werde es versuchen – martiendt

Verwandte Themen