Sie müssen alle Warteschlangen abonnieren, an die Nachrichten weitergeleitet wurden, und sie mit ack konsumieren.
Zum Beispiel, wenn Sie zu einem Thema Austausch mit "Test" als Routing-Schlüssel veröffentlichen, und es gibt 3 persistente Warteschlangen, die "Test" abonnieren, müssten Sie diese drei Warteschlangen konsumieren. Es könnte besser sein, eine weitere Warteschlange hinzuzufügen, die auch Ihre Verbraucherprozesse hören würden, und ihnen zu sagen, dass sie diese Nachrichten ignorieren sollen.
Eine Alternative, da Sie RabbitMQ verwenden, besteht darin, ein benutzerdefiniertes Austausch-Plug-in zu schreiben, das einige Out-of-Band-Anweisungen zum Löschen aller Warteschlangen akzeptiert. Zum Beispiel könnte dieser Austausch einen speziellen Nachrichtenkopf lesen, der ihm sagt, alle Warteschlangen zu löschen, für die diese Nachricht bestimmt ist. Dies erfordert das Schreiben von Erlang-Code, aber es sind 4 verschiedene Austausch-Typen implementiert, so dass Sie nur den ähnlichsten kopieren und den Code für die neuen Bahaviours schreiben müssen. Wenn Sie hierfür nur benutzerdefinierte Header verwenden, kann der Nachrichtentext eine normale Nachricht für die Konsumenten sein.
Fazit:
1) der Verlag die Nachrichten selbst 2) der Verlag verbrauchen muss, kann eine spezielle Nachricht in einer speziellen Warteschlange sendet Verbraucher zu sagen, die Nachricht 3) der Verleger zu ignorieren schicken eine spezielle Nachricht an eine benutzerdefinierte Vermittlungsstelle, die alle vorhandenen Nachrichten aus den Warteschlangen löscht, bevor diese spezielle Nachricht an die Verbraucher gesendet wird.
Nö, löst dies ein anderes Problem. Ich brauche nicht eine Nachricht auf der Verbraucherseite zu verwerfen, ich will seine Lieferung von der Herstellerseite abzubrechen, so dass die Nachricht nicht erreicht einen Verbraucher wie wenn es nie existiert. In meinem Problem kann ein Verbraucher nicht entscheiden, ob eine Nachricht abgelehnt werden soll. – jkff
Wenn Nachrichten successfuly veröffentlicht und Sie müssen sie aus bekannten Warteschlange entfernen, dann abonnieren Sie es ot und verbrauchen sie in Produzenten. –