WL9.X系でJMSを使うことになりまして、まあ今まで色々調べてきたんですが、ついつい忘れがちになってしまいそうな部分を。
Q. JMSキューの最大メッセージ数はどこで指定できるのか/されているのか?
A. JMSサーバーの「コンフィギュレーション」→「しきい値と割り当て」→「割り当て」の「最大メッセージ数」で指定できます。(キュー自体ではなくJMSサーバーの設定に属するらしい)
これを超過すると、以下のような例外がプロデューサ側で発生します。
weblogic.jms.common.ResourceAllocationException: weblogic.messaging.kernel.QuotaException: Quota JMSServer-0.Quota.1162782914171 exceeded: Request: 58 bytes. Quota: bytes = 156 / 9223372036854775807 messages = 6 / 6 policy = FIFO outstanding blocking request false
同じ設定画面に「しきい値」というのもあります。例えばここで指定した「最大メッセージしきい値」を超えると、WebLogicのログに以下のログが出力されます。
<2006/11/06 12時21分15秒 JST> <Alert> <JMS> <BEA-040026> <JMSServer "JMSServer-0" で、 送り先 SystemModule-0!Queue-0 のメッセージのしきい値を超過しました。>
また、受信側が動いてメッセージを刈り取っていき、「最小メッセージしきい値」を下回ると、WebLogicのログに以下のログが出力されます。
<2006/11/06 12時21分53秒 JST> <Alert> <JMS> <BEA-040027> <JMSServer "JMSServer-0" で、 送り先 SystemModule-0!Queue-0 のメッセージのしきい値条件をクリアしました。>
ちなみに「一つのメッセージは最大何バイトまでか」については、キューの「コンフィギュレーション」→「しきい値と割り当て」→「割り当て」の「最大メッセージサイズ」で設定可能です。(再起動不要)
メッセージをずらずらと送信していくと、おおよそ指定したメッセージサイズほど送信し終えた後の送信で、
weblogic.jms.common.ResourceAllocationException: weblogic.messaging.kernel.QuotaException: Maximum message size exceeded - allowable size for kernel is 2147483647, and allowable size for destination is 32 and your message's size is 33
というログが出力されました。
受信側では、この例外が出たメッセージだけ、受信できませんでした。
コメント