最終的にメッセージをRabbitMQの交換に公開するイベントで実行される1つのresqueジョブがあります。メッセージが正常に公開されたかどうかをバニー(Rabbit MQ rubyクライアント)で確認するにはどうすればいいですか?メッセージが公開されているかどうか、RabbitMQのステータスを確認しますか?
謝辞などを使用していますか?
ありがとうございます!
最終的にメッセージをRabbitMQの交換に公開するイベントで実行される1つのresqueジョブがあります。メッセージが正常に公開されたかどうかをバニー(Rabbit MQ rubyクライアント)で確認するにはどうすればいいですか?メッセージが公開されているかどうか、RabbitMQのステータスを確認しますか?
謝辞などを使用していますか?
ありがとうございます!
publish
メソッドが返されると、メッセージはキューに公開されます。メッセージを公開するための遅延アクションはありません。
publish
を実行すると、メッセージがキューに公開されているかどうかわかりません。
必ず使用する必要がある場合は、publish confirm
またはtx transaction
を使用する必要があります。
http://www.rabbitmq.com/blog/2011/02/10/introducing-publisher-confirms/
(注)この記事を読む:デフォルトでは、クライアントは任意のHAポリシーを持っていない、あなたはそれを実装する必要があります。
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
}
});
注2:セクションStreaming Lightweight Publisher Confirms
を参照してくださいメッセージが交換の内部に、常にキュー内の「置く」ことはありません。
'publish'メソッドを呼び出すと、それが交換機に置かれます。私の質問は、ウサギMQサーバがダウンしていて、私のresqueジョブがパブリッシュできない場合、再パブリッシュ/再試行する方法です。このセクションを参照してください**リンクhttp://rubybunny.info/articles/queues.html#message_acknowledgementsの**メッセージの確認応答はトランザクションとパブリッシャーの確認とどのように関係していますか?S1がダウンしている場合はどうなりますか? 。 – kamal