2016-10-04 2 views
1

私はJavaでメッセージを確認する方法を理解しようとしましたが、わかりません。ここ
は公式のRabbitMQの例である:
http://hg.rabbitmq.com/rabbitmq-java-client/file/default/test/src/com/rabbitmq/examples/ConfirmDontLoseMessages.javaJavaでRabbitMQメッセージを確認するには?

問題は、彼らがすべてのメッセージが確認されたとき、彼らは待つことだけ後のキューに送信するために10000件のメッセージを使用していることです。私は1つのメッセージとスレッドごとに1つのメッセージを送信し、それを確認する必要があります(私の場合、私は時々メッセージを送信しなければならないいくつかの等しい出版社があります)。 1つのメッセージを確認する方法(すべてのメッセージを確認しない)

私のようなものが必要です。この記事を読んで

for (long i = 0; i < MSG_COUNT; ++i) { 
    ch.basicPublish("", QUEUE_NAME, 
        MessageProperties.PERSISTENT_BASIC, 
        "nop".getBytes()); 
    ch.wait_for_confirm(); 
    if(ch.isConfirmed){ 
     //OK 
    } 
    else{ 
     //Republish 
    } 
} 

答えて

0

を:要するに

http://www.rabbitmq.com/blog/2011/02/10/introducing-publisher-confirms/

をごtx-transactionsを使用することができます。 ch.txSelect(); for (int i = 0; i < MSG_COUNT; ++i) { ch.basicPublish("", QUEUE_NAME, MessageProperties.PERSISTENT_BASIC, "nop".getBytes()); ch.txCommit(); }

またはpublish-confirmationハンドラ:

ch.addConfirmListener(new ConfirmListener() {....}

最初の方が簡単ですが、2番目の方が遅くなります。

0
あなたは下のリンクをチェックすることができ、各メッセージに対する肯定応答を使用する必要があるの

https://www.rabbitmq.com/confirms.html

+0

ソリューションへのリンクは歓迎ですが、あなたの答えはそれなしに有用であることを確認してください:[リンクの周りにコンテキストを追加] (https://meta.stackexchange.com/a/8259)あなたの仲間のユーザーは、それが何であるか、なぜそれがあるのか​​をいくつか考えてから、ターゲットページの場合にリンクしているページの最も関連性の高い部分を引用します利用できません。 [リンク以上のアンサーは削除される可能性があります](https://stackoverflow.com/help/deleted-answers) –

+0

ご意見ありがとうございます。#Sam Onela –

関連する問題