Ich baue ein System, wo zwei verschiedene Entitäten Nachrichten von der gleichen Quelle verarbeiten müssen (auf unterschiedliche Weise - zum Beispiel protokolliert man alle Nachrichten, während eine andere Entität Daten aggregieren möchte).Kann ein NATS-Herausgeber eine einzelne Nachricht in mehrere Warteschlangen senden?
Im Idealfall ist jede Entität für Leistung und Ausfallsicherheit vollständig skalierbar. Daher verfügen wir über mehrere Publisher, mehrere Protokollteilnehmer und mehrere Aggregationsteilnehmer. Dennoch werden alle von jedem veröffentlichten Nachrichten von genau einem Protokollteilnehmer und einem Aggregationsteilnehmer verarbeitet.
Mit AMQP können wir dies erreichen, indem wir einen Fan-out-Austausch veröffentlichen, der Nachrichten an zwei Warteschlangen verteilt, wobei jede Warteschlange viele Abonnenten hat. Ich verstehe, dass das gleiche Verhalten in NATS erreicht werden kann, indem man einfach alle Teilnehmer auf das gleiche "Thema" hört, indem man zwei unterschiedliche "Warteschlangengruppennamen" basierend auf ihren Rollen verwendet. In einem solchen Fall werden Nachrichten an das Subjekt an einen Teilnehmer von jeder Warteschlangengruppe geliefert, d. H. Jede Nachricht wird genau n-mal zugestellt, wobei n die Anzahl von unterschiedlichen Warteschlangengruppen und nicht die Anzahl von Teilnehmern ist. Ist das richtig?
Sie sagen, dass, wenn ein Teilnehmer abstürzt, werden wir Daten verlieren? – Guss
Wenn ein Teilnehmer offline geht, wird der nats-Server nach einer bestimmten Zeitüberschreitung über dieses Ereignis informiert, und während dieser Zeitüberschreitung kann es in unserem Fall zu einem Datenverlust kommen. – ritesh4302