Gibt es eine Möglichkeit, Postgres Listen / Notify-Funktion zu verwenden, um eine Nachricht an einen Kanal zu übermitteln, und nur ein Listener diese Nachricht zu konsumieren?
Der Grund dafür ist, dass ich mehrere 'Worker'-Apps habe, die alle denselben Postgres-Kanal hören. Aber ich möchte, dass die Arbeit nur einmal pro Nachricht über den Benachrichtigungskanal erledigt wird.
Wenn Listen / Notify nicht die richtige Funktion in Postgres ist, gibt es eine separate Funktion, die ich verwenden sollte?
Idealerweise möchte ich dies ohne zusätzliche Erweiterungen tun.
quelle
Ich habe so etwas vor einiger Zeit mit gutem Erfolg gemacht. Ich habe RabbitMQ und dieses Plugin https://github.com/gmr/pgsql-listen-exchange verwendet
Grundsätzlich stellt RabbitMQ eine Verbindung zu PostgreSQL her und wartet auf das Benachrichtigungsereignis. Anschließend können Sie RabbitMQ verwenden, um diese Nachricht in so viele Warteschlangen wie erforderlich zu aggregieren und eine App für jede Warteschlange bereitzustellen
quelle