最近 Hornetq コードを学んでいて、JMSbridge に疑問を持っています。
ご覧のとおり、JMSbridgeImpl.java には「sendMessages()」という名前の fun があります。fun send msg をリモート JMSServer に送信しますが、確認応答は行いません。
しかし、"sendBatchNonTransacted()" という名前の fun の int には、"messages.getLast().acknowledge();" などの最後のメッセージで確認するだけです。
問題は、「sendMessages()」という名前の楽しみの各メッセージで確認しないのはなぜですか?
申し訳ありませんが、私の英語はプールです。
オンラインであなたの助けを待っています!ありがとう !
--------------------------------------------
ああ、最初の質問をしてくれた「Moj Far」に感謝します。わかりました。
しかし、別の質問があります。hornetQ のソース コードを変更しました。ClientConsumer (init が成功した) を使用してローカルの HornetQでメッセージを取得し、
JMS プロデューサーを使用してリモートの JMSServer にメッセージを送信したいと考えています。
「SourceReceiver」クラスの「Run」機能で、次のように変更します。
if (bridgeType == JMSBridgeImpl.ALL_NETTY_MODE ) {
msg = sourceConsumer.receive(1000);
} else { /* core client receive msg */
cmsg = localClientConsumer.receive(1000);
if (cmsg != null) {
hq_msg = HornetQMessage.createMessage(cmsg, localClientSession);
//hq_msg = HornetQMessage.createMessage(cmsg, null);
hq_msg.doBeforeReceive();
//cmsg.acknowledge(); do ack after send
msg = hq_msg;
}
}
しかし、2 時間実行した後、VM メモリはオーバーフローします。
私も localClientSession を使用して HornetQMessage を作成しないようにしていますが、メモリもオーバーフローしています。
私のコードに何か問題がありますか?