2017-05-17 2 views
1

Ich versuche gerade, eine NodeJS-Webanwendung zu erstellen, die über einen Web- und einen Worker-Prozess verfügt und AMQP für die Kommunikation zwischen ihnen verwendet. Bei meinem aktuellen Setup wird beim Starten der Anwendung ein Skript für den Webprozess (server.js) und ein weiteres Skript für den Arbeitsprozess (worker.js) gestartet. Jede von ihnen include eine dritte Datei, amqp.js, die eine Startfunktion verwendet, die das Erstellen einer Verbindung beinhaltet, dann das Erstellen eines Kanals und dann das Anstellen von Warteschlangen. Beim Versuch, ein anderes Problem zu beheben, stieß ich jedoch auf this article, die eine andere Struktur zu zeigen scheint: eine Verbindung wird zuerst erstellt, und dann werden die zwei Prozesse gestartet, die jeweils einen Kanal für diese Verbindung erstellen und zwei Warteschlangen aktivieren .Separate Web- und Worker-Prozesse, sollte für jede eine neue Verbindung geöffnet werden?

Soll ich für jeden Worker eine neue Verbindung erstellen, und kann ich dies in einer Umgebung implementieren, in der das Web und der Worker getrennt sind und nicht anders kommunizieren können?

Antwort

2

RabbitMQ-Verbindung gilt als langlebig. Wenn Ihre Clients Speicher freigeben, sollten sie sich eine Verbindung teilen. Es ist nur ein allgemeiner Hinweis. Ich kenne keine Nachteile, wenn Sie sagen, 10 Verbindungen für Ihre Anwendung. Wenn Sie Tausende von Verbindungen haben, wird dies wahrscheinlich die Leistung beeinträchtigen und die Überwachung schwieriger machen.

direkt Ihre Frage zu beantworten:

Wenn Ihre worker unabhängig ist und Speicher nicht mit etwas teilen, haben Sie keine andere Wahl, als neue RabbitMQ Verbindung für sie zu schaffen. Ansonsten die Verbindung wiederverwenden.

Verwandte Themen