2016-06-25 13 views
1

Ich arbeite an dem Protokollierungsaspekt einer Laravel-Anwendung und wollte die Daten an eine SQS zum späteren Abruf senden. Ich möchte jedoch den Job von meinem Produktionsserver an die AWS-Warteschlange senden, aber dann eine Warteschlange auf einem separaten Protokollierungsserver einrichten, der die Warteschlange überwacht.Laravel - Auftrag auf einem Server, bearbeitet auf einem anderen

Ich verstehe, wie Sie den Warteschlangen-Worker einrichten, um die Warteschlange zu hören, Laravels Jobs sind jedoch selbst zu handhaben. Wenn der Worker auf dem Protokollierungsserver die Nachricht von SQS abruft, sucht er nach einem Job im selben Namespace (mit dem gleichen Klassennamen), um ihn zu verarbeiten. Gibt es eine Möglichkeit, anders damit umzugehen, oder muss ich einfach den Job Handler auf dem Protokollierungsserver benennen, genauso wie der Job Dispatcher auf dem Produktionsserver.

Antwort

1

Sie können für jeden spezifischen Server verschiedene Warteschlangen erstellen und jeden Auftrag auf einem davon senden, je nachdem, wo sie ausgeführt werden müssen.

Im Grunde ist dies wie einen Job auf einer bestimmten Warteschlange drücken:

$job = (new SendReminderEmail($user))->onQueue('emails'); 

Und hier ist der Befehl, um die Verarbeitung von Aufträgen aus einer bestimmten Warteschlange:

php artisan queue:listen --queue=emails 

Hoffe, es hilft

+0

Ja, ich verstehe diesen Teil. Es ist die Handhabung des Jobs auf dem Logging-Server, über den ich mich wundere. Per E-Mail scheint es, als hätte mein Produktionscode einen Job namens 'SendReminderEmail', dann würde mein Logging-Server (der die Warteschlange ausführt) einen Job namens' SendReminderEmail' benötigen, damit er implizit behandelt wird. Ist das genau? – djt

+0

Im Allgemeinen serialisiert Laravel das Job-Objekt, bevor es an den Warteschlangenanbieter gesendet wird, und am anderen Ende erstellt es das ursprüngliche Objekt unter Verwendung der serialisierten Daten und der Klassendefinition neu. Also ja, es muss die gleiche Klasse auf beiden Servern haben. – Atrakeur

+0

Ich sehe. Das scheint bedauerlich. Wie gehen die Leute normalerweise damit um? Ich würde nicht das gesamte Produktions-Repo auf dem Logging-Server duplizieren wollen, da es Tonnen unnötigen Aufblähens wäre. – djt

Verwandte Themen