Frage

Ich habe ein System, das Nachrichten sporadisch generieren, und ich möchte nur entweder Null oder eine Nachricht alle 5 Minuten vor. Wenn keine Meldung erzeugt wird, würde nichts von der Warteschlange Verbraucher verarbeitet werden. Wenn hundert identische Nachrichten innerhalb von 5 Minuten erzeugt werden, möchte ich nur einer von denen aus der Warteschlange verbraucht werden.

Ich bin mit AMQP (RabbitMQ), gibt es eine Möglichkeit, dies innerhalb rabbitmq zu erreichen oder das AMQP-Protokoll? Kann ich eine Warteschlange Inhalte überprüfen, um sicherzustellen, dass ich ein Duplikat nicht einfügen? Es scheint, dass Warteschlange Inspektion eine schlechte Idee ist und nicht in der Regel, was sollte ein Messaging-System durchgeführt werden.

Ohne Warteschlange Inspektion, kann dies mit diesen Werkzeugen erreicht werden? Die einzige Lösung, die den Sinn kommt, ist eine zweite Warteschlange, die alle Nachrichten nimmt, dann wird der Verbraucher jede Nachricht liest und legt sie in eine interne Warteschlange, wartet 5 Minuten, und alle doppelten Nachrichten, die verworfen werden, empfangen werden. Nach der Verzögerung wird die einzelne Nachricht auf der „echte“ Warteschlange gestellt verarbeitet werden.

Es scheint, als könnte dies eine gemeinsame Situation, dass ein Warteschlangensystem umgehen kann. Irgendwelche Ideen?

War es hilfreich?

Lösung

Handhabung Nachrichtenstatus ist nicht etwas, das AMQP es zu tun hat. Sie könnten versuchen, den Zustand in einem Prozess zu handhaben, die auf dem AMQ und Proxy-Nachrichten ebenfalls vorhanden ist (wie Sie in Ihrer ursprünglichen Frage geschrieben haben). Je nach Situation IhrFormal könnten vielleicht Sequenzen verwenden oder anspruchsvollere mittels staatenlos Duplikaterkennung aber AMQP behandelt nicht diesen speziellen Anwendungsfall.

Das einzige, was garantiert, dass, wenn mehrere Bindungen übereinstimmen eine Nachricht, die anschließend in eine Warteschlange geliefert wird, nur eine Nachricht tatsächlich geliefert wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top