Wenn Sie die publish
ausführen, sind Sie nicht sicher, dass die Nachricht in der Warteschlange veröffentlicht wird.
Wenn Sie sicher sein wollen, dass Sie verwenden müssen, müssen Sie publish confirm
oder tx transaction
verwenden.
diesen Beitrag http://www.rabbitmq.com/blog/2011/02/10/introducing-publisher-confirms/
Hinweis lesen: Standardmäßig werden die Kunden haben keine HA Politik, haben Sie es zu implementieren. Siehe Abschnitt Streaming Lightweight Publisher Confirms
:
private volatile SortedSet<Long> unconfirmedSet =
Collections.synchronizedSortedSet(new TreeSet());
...
ch.setConfirmListener(new ConfirmListener() {
public void handleAck(long seqNo, boolean multiple) {
if (multiple) {
unconfirmedSet.headSet(seqNo+1).clear();
} else {
unconfirmedSet.remove(seqNo);
}
}
public void handleNack(long seqNo, boolean multiple) {
// handle the lost messages somehow
}
});
Hinweis 2: die Nachricht wird nie „put“ innerhalb einer Börse, sondern immer in einer Warteschlange.
Wenn Sie 'publish' Methode aufrufen, legte es in den Austausch, meine Frage ist, was passiert, wenn Kaninchen MQ-Server ist und meine Resque-Job ist nicht in der Lage zu veröffentlichen, wie erneut zu veröffentlichen? siehe diesen Abschnitt ** Wie Nachrichten Bestätigungen zu Transaktionen und Publisher bestätigen ** von Link http://rubybunny.info/articles/queues.html#message_acknowledgements, Es sagt, was ist, wenn S1 ist, Dies ist, was ich suche Lösung für . – kamal