Heute bin ich stolz, Laravel Horizon ankündigen zu können, das ein wunderschönes Dashboard und ein codegesteuertes Konfigurationssystem für Laravel Redis-Warteschlangen bietet.
Neben einem neuen codegesteuerten Konfigurationssystem verfügt Horizon auch über eine schöne Dashboard-Benutzeroberfläche. Es ist vollständig Open Source und kostenlos für die gesamte Laravel-Community. Wir werden morgen eine Beta-Version veröffentlichen , ich hoffe, es gefällt Ihnen .
Anmerkung des Übersetzers: Seit Oktober 2019 hat Horizon Version 3.4.1 veröffentlicht /horizon wird direkt in bestehende Anwendungen installiert. Es bietet Echtzeiteinblicke in Arbeitslasten in der Warteschlange, aktuelle Jobs, fehlgeschlagene Jobs, Jobwiederholungen, Durchsatz- und Laufzeitmetriken sowie Prozesszahlen. Steuern Sie die Dashboard-Authentifizierung durch einen einfachen Rückruf, der mit Horizon::auth
registriert wird, sodass Sie die volle Kontrolle über den Zugriff auf Ihr Dashboard haben.
Konfiguration
Horizon ist eine großartige neue Möglichkeit, Laravel-Warteschlangen zu konfigurieren. Ähnlich wie beim Planer von Laravel sind alle Warteschlangenarbeiter über Code konfigurierbar: Wenn Sie diese Konfiguration in Ihrem Code haben, bedeutet dies, dass alles unter Quellcodeverwaltung steht, was Ihrem Team die Zusammenarbeit erleichtert. In der Datei config/horizon.php
konfigurieren wir die Anzahl der zu erstellenden Prozesse, die zu verarbeitenden Warteschlangen, das Warteschlangen-Timeout und andere Parameter, die an die queue übergeben werden müssen :work
Artisan-Befehl Beliebige Einstellung. Um dann alle Warteschlangenarbeiter zu starten, genügt ein einfacher Befehl: php artisan horizon
. Es sind keine weiteren Befehlszeilenoptionen erforderlich. Dieser Befehl liest die Horizon-Konfiguration und konfiguriert alle erforderlichen Arbeitsprozesse. composer require laravel / horizon
直接安装到现有应用程序中。 它提供对队列工作负载,最近的作业,失败的作业,作业重试,吞吐量和运行时指标以及进程计数的实时洞察。 通过Horizon :: auth
注册的简单回调控制仪表板的身份验证,从而使您可以完全控制对仪表板的访问。
配置
Horizon 是配置 Laravel 队列的绝佳新方法。 与 Laravel 的调度程序类似,所有队列工作者都可以通过代码配置:
在您的代码中拥有此配置意味着这一切都在源代码控制之下,从而使您的团队可以轻松地进行协作。在config/horizon.php
文件中,我们配置要创建的进程数量、需要处理的队列、队列超时时间以及需要传递给 queue:work
Artisan 命令的其他任何设置 。
然后,要启动所有的队列工作者,只需要一个简单的命令:php artisan horizon
。 不需要其他命令行选项。 该命令将读取 Horizon 配置并配置所有必需的工作进程。
将 Horizon 安装并部署到生产环境后,您可以通过修改配置文件并重新部署来修改整个队列工作者的配置。
失败的任务
Horizon 提供了清晰详细的界面,用于检查和重试失败的任务(是的,我们都有)。 您可以查看该任务的异常堆栈跟踪,标签和最近重试记录。 将失败的任务详细信息直接在页面上显示真是太好了。 由于重试是链接到失败的原始任务,因此您不再需要盲目地尝试在控制台输入queue:retry
并确定其重试是成功完成还是再次失败:
标签监控
Horizon 允许您为任务分配标签,包括 Email
、Broadcasts
、Notifications
和Queued Listeners
。 实际上,Horizon 会根据附加到队列的 Eloquent Model 智能地给大多数任务打上标签。
您可以通过这些标签轻松地搜索到队列任务,从而查看特定的客户任务或者程序中的其他队列任务。 此功能使您可以快速关注高价值客户,或为刚提交支持工单的客户找到失败的任务:
平衡
Horizon 可以根据队列的工作负载自动平衡队列中的队列工作进程。 例如,如果default
队列为空,但notifications
队列中充满了队列任务,则 Horizon 可以自动将notifications
的任务分配到default
队列中,以帮助快速处理这些任务。
队列赶上后,Horizon 将确保在所有队列中公平地重新分配任务。
指标图表
Horizon 提供吞吐量和平均运行时间图表,使您可以查看单个任务或整个队列的吞吐量和运行时间趋势。 这些指标快照是使用horizon:snapshot
Nachdem Sie Horizon in einer Produktionsumgebung installiert und bereitgestellt haben, können Sie die gesamte Konfiguration des Warteschlangenarbeiters ändern, indem Sie die Konfigurationsdatei ändern und eine erneute Bereitstellung durchführen.
queue:retry
in die Konsole einzugeben und festzustellen, ob der Wiederholungsversuch erfolgreich abgeschlossen wurde oder erneut fehlgeschlagen ist: 🎜🎜 Tag-Überwachung 🎜 🎜Horizon ermöglicht es Ihnen, Aufgaben Tags zuzuweisen, einschließlich E-Mail
, Broadcasts
, Benachrichtigungen
und Listener in der Warteschlange
. Tatsächlich markiert Horizon die meisten Aufgaben intelligent, basierend auf dem an die Warteschlange angehängten Eloquent-Modell. 🎜🎜Mit diesen Tags können Sie ganz einfach nach Warteschlangenaufgaben suchen, um bestimmte Kundenaufgaben oder andere Warteschlangenaufgaben im Programm anzuzeigen. Mit dieser Funktion können Sie sich schnell auf wertvolle Kunden konzentrieren oder fehlgeschlagene Aufgaben für Kunden finden, die gerade ein Support-Ticket eingereicht haben: 🎜🎜Balance🎜🎜 Horizon Queue-Worker-Prozesse innerhalb einer Warteschlange können basierend auf der Arbeitslast der Warteschlange automatisch ausgeglichen werden. Wenn beispielsweise die default
-Warteschlange leer ist, die notifications
-Warteschlange jedoch mit Aufgaben in der Warteschlange gefüllt ist, kann Horizon automatisch Aufgaben aus notifications
default
-Warteschlange, um diese Aufgaben schnell zu verarbeiten. 🎜🎜Sobald die Warteschlangen aufgeholt haben, sorgt Horizon dafür, dass die Aufgaben gerecht auf alle Warteschlangen verteilt werden. 🎜🎜Indikatordiagramm🎜🎜Horizon bietet Durchsatz- und durchschnittliche Laufzeitdiagramme, sodass Sie Durchsatz und Laufzeit für einzelne Aufgaben oder den Trend einer gesamten Flotte anzeigen können. Diese Metrik-Snapshots werden mit dem Befehl horizon:snapshot
erfasst, der mithilfe des integrierten Aufgabenplaners von Laravel so eingestellt werden kann, dass er jede Minute ausgeführt wird. Dadurch können Sie Leistungseinbußen nach der Bereitstellung schnell erkennen. 🎜Benachrichtigungen
Wenn eine Ihrer Warteschlangen eine bestimmte Auslastung erreicht, sendet Horizon sowohl Slack- als auch SMS-Benachrichtigungen. Sie können ganz einfach Wartezeitschwellenwerte konfigurieren, um zu bestimmen, wann Benachrichtigungen gesendet werden. Dadurch wissen Sie immer, wann die Warteschlange weitere Prozesse benötigt. Sobald Sie benachrichtigt werden, können Sie mit der codegesteuerten Konfiguration von Horizon schnell Konfigurationsänderungen vornehmen, um weitere Prozesse hinzuzufügen.
Fazit & Dank
Ich möchte mich besonders bei Mohamed Said, David Hemphill und Steve Schoger bedanken, die alle zum Design und der Entwicklung von Horizon beigetragen haben. Steve hat die Benutzeroberfläche entworfen, David Hemphill hat die Schnittstelle als Vue-Anwendung implementiert und Mohamed hat das Frontend mit dem von mir implementierten Horizon-Backend verbunden.