ページの先頭行へ戻る
Interstage Application Server V13.0.0 GlassFish 設計・構築・運用ガイド
FUJITSU Software

2.19.3 物理格納先の管理

物理格納先は、JMSクライアントアプリケーションが送信したメッセージを格納する領域です。

物理格納先のタイプには、TopicとQueueの2種類があります。Publish/Subscribeメッセージングモデルを使用する場合は、物理格納先のタイプはTopicとなります。また、Point-to-Pointメッセージングモデルを使用する場合は、物理格納先のタイプはQueueとなります。

以下の機能を提供します。

蓄積するメッセージの制限

以下が制限できます。

  • 物理格納先が蓄積できる単一メッセージの最大サイズ

    単一メッセージの最大サイズは、maxBytesPerMsgプロパティ(デフォルトは無制限)で設定します。
    上限を超えたサイズのメッセージは、送信できません。

  • 物理格納先が蓄積できるメッセージの最大合計サイズおよびメッセージの最大数

    メッセージの最大合計サイズは、maxTotalMsgBytesプロパティ(デフォルトは無制限)で設定します。
    メッセージの最大数は、maxNumMsgsプロパティ(デフォルトは無制限)で設定します。

    どちらかの上限を超えたメッセージが送信された場合の動作は、limitBehaviorプロパティで制御することができます。動作は、以下の4つから選択できます。

    • 新しい送信メッセージを拒否します。(デフォルト)

    • 物理格納先に蓄積している最も古いメッセージを破棄して送信します。

    • 物理格納先に蓄積している優先度が最も低いメッセージを破棄して送信します。

    • 送信可能となるまでメッセージの送信処理を待機します。

接続するJMSクライアント数の制限

以下が制限できます。

  • 物理格納先に送信可能なプロデューサ数

    送信可能なプロデューサ数は、maxNumProducersプロパティ(デフォルトは100)で設定します。
    上限を超えた数のプロデューサは、作成できません。

  • Queueタイプの物理格納先に受信可能なコンシューマ数

    受信可能なコンシューマ数は、maxNumActiveConsumersプロパティ(デフォルトは無制限)で設定します。
    上限を超えてコンシューマを作成すると、受信待機となります。受信中のコンシューマが切断されると、受信待機が解除され、受信可能となります。

    受信待機できるコンシューマ数は、maxNumBackupConsumersプロパティ(デフォルトは0)で設定します。
    上限を超えた数のコンシューマは、作成できません。

参照

プロパティの詳細については、「8.7.3 物理格納先自動生成に関するプロパティ」および「8.7.7 物理格納先の生成または更新に関するプロパティ」を参照してください。

物理格納先を以下のように管理します。

物理格納先の動作は、生成時に設定します。設定可能な項目と設定方法について以下に説明します。


物理格納先の作成

物理格納先は、以下の方法で作成できます。

imqcmdコマンドを使用する

imqcmdコマンドのcreate dstサブコマンドを使用して、物理格納先を作成します。詳細については、「10.6.1 create dstサブコマンド」を参照してください。

ローカルホスト上で動作しているメッセージブローカに対して、JMSQueueという名前の物理格納先タイプがQueueである物理格納先を作成する

C:\Interstage\glassfish5\mq\bin\imqcmd create dst -n JMSQueue -b localhost:27676 -t q

/opt/FJSViaps/glassfish5/mq/bin/imqcmd create dst -n JMSQueue -b localhost:27676 -t q

デフォルトの設定を変更して物理格納先を作成する場合は、create dstサブコマンドの-oオプションに物理格納先の生成に関するプロパティを指定します。物理格納先の生成に関するプロパティの詳細については、「8.7.7 物理格納先の生成または更新に関するプロパティ」を参照してください。

物理格納先の蓄積メッセージの最大数を「100」に変更する例

C:\Interstage\glassfish5\mq\bin\imqcmd create dst -n JMSQueue -b localhost:27676 -t q -o maxNumMsgs=100

/opt/FJSViaps/glassfish5/mq/bin/imqcmd create dst -n JMSQueue -b localhost:27676 -t q -o maxNumMsgs=100
TemporaryQueueおよびTemporaryTopicを使用する

以下のAPIを使用した場合、メッセージブローカは物理格納先を一時物理格納先として作成します。

  • javax.jms.Session#createTemporaryQueue()

  • javax.jms.Session#createTemporaryTopic()

  • javax.jms.JMSContext#createTemporaryQueue()

  • javax.jms.JMSContext#createTemporaryTopic()

一時物理格納先は、一時物理格納先を作成したJMSクライアントアプリケーションが接続している間だけ使用することができます。
また、一時物理格納先のプロパティには、8.7.7 物理格納先の生成または更新に関するプロパティの省略値が設定されます。

注意

一時物理格納先を削除する場合は、以下のAPIを使用してください。

  • javax.jms.TemporaryQueue#delete()

  • javax.jms.TemporaryTopic#delete()

メッセージブローカの自動生成機能を使用する

メッセージブローカは、プロデューサまたはコンシューマが存在していない物理格納先にアクセスした場合、新しい物理格納先を自動的に作成します。

物理格納先の自動生成に関する設定は、imqbrokerdコマンドの-Dオプションを使用して行います。

コマンドの詳細については、「10.5 imqbrokerd」を参照してください。また、物理格納先の自動生成に関するプロパティの詳細については、「8.7.3 物理格納先自動生成に関するプロパティ」を参照してください。

注意

  • 本機能は、定義ミスにより誤って意図しない物理格納先にメッセージが送受信される場合があります。このため、本運用時には、物理格納先の自動生成プロパティに「false」を設定して、物理格納先の自動生成を抑止してください。

  • 自動生成された物理格納先は、蓄積メッセージが存在しない状態でアクセスがなくなると自動削除されます。

  • 自動生成された物理格納先の名前は、以下のいずれかによって決まります。

    • JMS送信先リソースのNameプロパティに指定した物理格納先名
      詳細については、「10.1.14.8 create-jms-resourceサブコマンド」を参照してください。

    • 以下のAPIで指定した物理格納先名
      javax.jms.Session#createQueue(String)
      javax.jms.Session#createTopic(String)
      javax.jms.JMSContext#createQueue(String)
      javax.jms.JMSContext#createTopic(String)

以下の例に示す2つのプロパティを、imqbrokerdコマンドに指定してメッセージブローカを起動することにより、物理格納先タイプがQueueおよびTopicである物理格納先の自動生成を抑止します。

物理格納先の自動生成を抑止する例

C:\Interstage\glassfish5\mq\bin\imqbrokerd -port 27676 -name brokertest -Dimq.autocreate.queue=false -Dimq.autocreate.topic=false

/opt/FJSViaps/glassfish5/mq/bin/imqbrokerd -port 27676 -name brokertest -Dimq.autocreate.queue=false -Dimq.autocreate.topic=false

物理格納先の一覧表示

imqcmdコマンドのlist dstサブコマンドを使用して、物理格納先の一覧を表示します。詳細については、「10.6.6 list dstサブコマンド」を参照してください。

メッセージブローカの物理格納先の一覧を表示する例

C:\Interstage\glassfish5\mq\bin\imqcmd list dst -b localhost:27676

/opt/FJSViaps/glassfish5/mq/bin/imqcmd list dst -b localhost:27676

物理格納先情報の表示

imqcmdコマンドのquery dstサブコマンドを使用して、物理格納先に設定されているプロパティの情報を表示します。詳細については、「10.6.15 query dstサブコマンド」を参照してください。

物理格納先JMSQueueのプロパティの情報を表示する

C:\Interstage\glassfish5\mq\bin\imqcmd query dst -b localhost:27676 -t q -n JMSQueue

/opt/FJSViaps/glassfish5/mq/bin/imqcmd query dst -b localhost:27676 -t q -n JMSQueue

物理格納先プロパティの更新

imqcmdコマンドのupdate dstサブコマンドを使用して、物理格納先に設定されているプロパティの情報を更新します。
コマンドの詳細については、「10.6.21 update dstサブコマンド」を参照してください。また、物理格納先の更新に関するプロパティの詳細については、「8.7.7 物理格納先の生成または更新に関するプロパティ」を参照してください。

物理格納先JMSQueueのmaxNumMsgsプロパティとmaxBytesPerMsgプロパティを変更する

C:\Interstage\glassfish5\mq\bin\imqcmd update dst -b localhost:27676 -t q -n JMSQueue -o maxNumMsgs=100 -o maxBytesPerMsg=100

/opt/FJSViaps/glassfish5/mq/bin/imqcmd update dst -b localhost:27676 -t q -n JMSQueue -o maxNumMsgs=100 -o maxBytesPerMsg=100

物理格納先の停止再開

imqcmdコマンドのpause dstサブコマンドを使用して、Producerから物理格納先、物理格納先からConsumer、またはその両方のメッセージの配信を停止します。詳細については、「10.6.10 pause dstサブコマンド」を参照してください。

物理格納先JMSQueueからConsumerへのメッセージの配信を停止する

C:\Interstage\glassfish5\mq\bin\imqcmd pause dst -b localhost:27676 -t q -n JMSQueue -pst CONSUMERS

/opt/FJSViaps/glassfish5/mq/bin/imqcmd pause dst -b localhost:27676 -t q -n JMSQueue -pst CONSUMERS

停止したメッセージの配信は、imqcmdコマンドのresume dstサブコマンドを使用して再開します。詳細については、「10.6.19 resume dstサブコマンド」を参照してください。

物理格納先JMSQueueからConsumerへのメッセージ配信を再開する

C:\Interstage\glassfish5\mq\bin\imqcmd resume dst -b localhost:27676 -t q -n JMSQueue

/opt/FJSViaps/glassfish5/mq/bin/imqcmd resume dst -b localhost:27676 -t q -n JMSQueue

物理格納先の蓄積メッセージの破棄

imqcmdコマンドのpurge dstサブコマンドを使用して、物理格納先に格納されたすべてのメッセージを破棄します。詳細については、「10.6.11 purge dstサブコマンド」を参照してください。

物理格納先JMSQueueに格納されたすべてのメッセージを破棄する

C:\Interstage\glassfish5\mq\bin\imqcmd purge dst -b localhost:27676 -t q -n JMSQueue

/opt/FJSViaps/glassfish5/mq/bin/imqcmd purge dst -b localhost:27676 -t q -n JMSQueue

物理格納先の削除

imqcmdコマンドのdestroy dstサブコマンドを使用して、物理格納先を削除します。詳細については、「10.6.3 destroy dstサブコマンド」を参照してください。

物理格納先JMSQueueを削除する

C:\Interstage\glassfish5\mq\bin\imqcmd destroy dst -b localhost:27676 -t q -n JMSQueue

/opt/FJSViaps/glassfish5/mq/bin/imqcmd destroy dst -b localhost:27676 -t q -n JMSQueue