Ich arbeite an dem Projekt, das Breiten- und Längengrad in Echtzeit übertragen soll
Ich habe etwas wie unten
%Vor%In einigen Fällen muss ich E-Mails in Echtzeit auslösen, also habe ich beschlossen, die Laravel-Nachrichtenwarteschlange wie folgt zu implementieren:
%Vor% Wenn ich php artisan queue:listen database
starte, wird auch mein Sendeereignis in die Warteschlange gestellt. Ich möchte das Broadcast-Event nicht anstellen. Wie geht das?
Weil Laravel Event Broadcasting standardmäßig in die Warteschlange gestellt wurde, wenn Sie ShouldBroadcast
interface erweitern. Wenn Sie nicht möchten, dass Event Broadcasting in die Warteschlange gestellt wird, sollten Sie ShouldBroadcastNow
interface erweitern.
Dies bedeutet, dass Ihr Event Broadcasting den Synchronisierungswarteschlangentreiber verwendet.
In Laravel ist die gesamte Ereignisübertragung standardmäßig in die Warteschlange gestellt.
Vor dem Senden von Ereignissen müssen Sie außerdem einen Warteschlangenlistener konfigurieren und ausführen. Die Übertragung aller Ereignisse erfolgt über Aufträge in der Warteschlange, so dass die Antwortzeit Ihrer Anwendung nicht ernsthaft beeinträchtigt wird.
In deinem Fall brauchst du zwei Warteschlangentreiber. Eine für die Übertragung von Ereignissen mit Echtzeitunterstützung. Eine für die Verarbeitung von E-Mails mit Warteschlangenunterstützung. Dafür benötigen Sie zwei Warteschlangentreiber. Sie können sie in config/queue.php
Mach das in deiner SendAlertEmail
Klasse.
Geben Sie in Ihrer TrackersBroadcast
die Echtzeitwarteschlange an. Dies ist Ihr redis
Warteschlangentreiber.
Lesen Sie Broadcast-Warteschlange unter Warum ist die Ereignisübertragung in der Warteschlange?
Ich hoffe, Sie finden das nützlich.
Vielleicht können Sie den Warteschlangennamen im Broadcast-Ereignis wie folgt angeben und diese Warteschlange nicht abhören, wenn Sie sie nicht verarbeiten müssen
%Vor%Tags und Links php laravel redis message-queue laravel-broadcast