Angenommen, ich habe eine Warteschlange "Q1" und mehrere Hersteller veröffentlichen in dieser Warteschlange und mehrere Benutzer lesen aus dieser Warteschlange.Aufruf von publish in einem Übergabe-Handler. Rabbitmq
Jetzt verarbeitet jeder Verbraucher die Nachricht von 'Q1' und setzt sie wieder in eine andere Warteschlange, sagen wir 'Q2'/'Q3'.
Wie sollten die Kanäle damit verbunden sein? Ich habe einen einzelnen Produzenten-Kanal erstellt, der in jeder Warteschlange (Q1 und Q2/Q3) und mehreren Konsumenten-Kanälen veröffentlicht wird. Ist es in Ordnung, mit einem einzelnen Producer-Channel zu arbeiten oder gibt es Synchronisationsprobleme?
Ist die Nachricht unverändert in seiner Existenz von Q1 zu Q2/Q3? Was meinst du mit "assoziierten Kanälen"? Und welche Art von Synchronisationsproblemen meinst du? Ein Produzent produziert Nachrichten so ... – cantSleepNow
Nachricht wird geändert, wenn von Q1 nach Q2/Q3 geschoben wird. Mit 'assoziierten Kanälen' meine ich den Kanal, der zum Veröffentlichen oder zum Abrufen von Nachrichten verwendet wird. Es wird normalerweise vorgeschlagen, dass Anwendungen lieber einen Kanal pro Thread verwenden, anstatt denselben Kanal über mehrere Threads hinweg zu teilen. Aber wenn ich nur einen einzigen Producer-Kanal verwende, würde es dann Probleme geben? – user1200611
Technisch nein, würde es nicht. Ich habe die C++ - Client-Lib verwendet, und dort gibt es ein einfaches Beispiel, in dem der Client eine Warteschlange abonniert, eine Nachricht sendet und sie dann empfängt, wobei alle denselben Kanal verwenden. https://github.com/alanxz/SimpleAmqpClient/blob/master/examples/simple_connect.cpp – cantSleepNow