0

生産者からの供給と消費者による消費の間に遅延を作成する方法を見つけることができました。

しかし、すべてのメッセージに遅延を作成する方法があるかどうかを知りたいです。たとえば、コンシューマーに 2 秒ごとに 1 つのメッセージのみを選択させたいとしますが、コンシューマーは効率的ではないため、プロデューサーに最高のパフォーマンス レートで生成してもらいたいとします。プロデューサーとして。キューからコンシューマーに送信される前に、各メッセージの遅延を制御する方法はありますか?

weblogic.jms.extensions.WLMessageProducer producer = (weblogic.jms.extensions.WLMessageProducer)queueSender;プロデューサー試着しました

`weblogic.jms.extensions.WLMessage message=(weblogic.jms.extensions.WLMessage)tMessage;
 message.setJMSDeliveryTime(20000);` 

onmessage ですが、違いは見られません。

4

2 に答える 2

1

あなたはおそらく欲しいでしょう:

((weblogic.jms.extensions.WLMessageProducer)producer).setTimeToDeliver(2000);

http://docs.oracle.com/cd/E15051_01/wls/docs103/javadocs/weblogic/jms/extensions/WLMessageProducer.html#setTimeToDeliver(long)

あなたの最初の試みが何をすることになっていたのかわかりません。ただしsetJMSDeliveryTime、Weblogic 9 以降は非推奨です。

于 2013-10-09T17:43:08.690 に答える
1

「消費者が2秒ごとに1つのメッセージのみを選択する」ことは、「キューから消費者に送信される前に各メッセージの遅延を制御する」ことと同じではないという点で、あなたの質問には少し矛盾があります。たとえば、プロデューサーがたとえば 10,000/hr でメッセージを送信し、各メッセージに 30 分の取引を設定した場合、コンシューマーは可能であれば 10,000/hr で消費しようとします。遅延の唯一の影響は、生産者が注入を開始してから 30 分後まで消費者が消費を開始しないことです。

前者がやりたいことであると仮定すると、これを行うには、WebLogic で唯一のオプションは、消費者コードに何かを実装して、その側の処理を遅くすることだと思います。

キュー設定TimeDeliver Overrideオンに設定すると、メッセージごとに遅延が実装されますが、レートは変更されません。Timeプロデューサからコード内でtoを設定することもできますDeliverが、WebLogic キュー設定も設定されている場合は優先 (オーバーライド) されます。

それが助けになることを願っています!

于 2013-10-10T15:25:49.337 に答える