私はスタンドアロンのMQ JMSアプリケーションを扱っています。私たちのアプリは、クライアントが既にキューに入れられているメッセージプロデューサをすでに消費していることを認識する必要があります。クライアントアプリケーションは私たちの責任ではないためです。だから、 "msg.acknowledge();"のようなものを書くことはできません。彼らの側のもの(msg.acknowledge()は私の状態では正しいアプローチではありません)。私はstackoverflowの歴史の答えを検索します。検索次は、かなり私が欲しいものと同じ:MQ JMS APIで既に消費されているメッセージを送信者がどのように知ることができますか?
https://stackoverflow.com/questions/6521117/how-to-guarantee-delivery-of-the-message-in-jms
Do the JMS spec or the various implementations support delivery confirmation of messages?
私の質問は、あるMQ APIまたはJMS APIでこれをアーカイブする他の方法がありますか?私はmsgの生産側でのみコーディングを行う必要があります、それはキューまたはトピックにすることができます。
もう1つの質問は、JMSの承認モードCLIENT_ACKNOWLEDGEですが、それは無関係ですか?私はいつも、このモードは、クライアントがメッセージを消費してmsg.acknowledge()を呼び出すまでsend()メソッドを呼び出すときにアプリケーションをブロックすることができると考えていますが、そうではないようです。プロダクトは、メッセージが配信された後にアプリケーションを終了するだけで、クライアントがacknowledge()を呼び出すまで、メッセージはキューに格納されます。それは、メッセージがクライアントによって確認されるまで、プロデューサアプリがそこにハングアップすることを可能にしますか?
私のコンセプトが正しくない場合は、正解、ありがとう。
ありがとうShashi、あなたの返信は非常に便利です。消費者がメッセージを受け取り、私たちの側からタイムスタンプを記録することを知る必要があります。だから、消費者がすでにメッセージを受け取っていることを知る必要があります。これをアーカイブするにはどうすればよいですか?それは何か違うの?私はトピックがメッセージを同期的に渡すことができることを知っています。永続的なサブスクリプションを使用している場合、それは私の要件を満たすことができますか? – phyerbarte
ちなみに、前述したように、メッセージIDがキューからチェックされ、メッセージがすでにクライアントによって消費されているかどうかを確認することができます。私はJMSの技術の詳細に慣れていないので、方向性を確認したいだけで、それを調べることができます。再度、感謝します。 – phyerbarte
@Shashi、MQ(IBM)の場合、クライアントはメッセージを読み取ったという肯定応答を返送する必要がありますか?そうでない場合は、正確に自動確認応答がq managerに送り返されるのはいつですか? onMessageが呼ばれた直後ですか? – bluelurker