WebOTX Manual V11.1 (第6版) 目次を表示 |
JMSに関する設定について説明します。
JMSサーバや、JMSリソース、および、送信先の基本的な管理は、運用管理コマンド (otxadmin)、あるいは、統合運用管理ツールで行います。さらに詳細な管理を行うためには、JMSサーバが提供している専用の運用管理ツールを利用します。
運用管理コマンド、あるいは、統合運用管理ツールからの各項目の設定方法については、「 各サービスの属性」を参照してください。また、JMSサーバが提供している専用の各運用管理ツールについては、「 コマンド > JMS」を参照してください。
JMSサーバの運用に関するプロパティは、JMSサービス (jms-service) と、JMSホスト (jms-host) のMOから設定できます。
運用管理コマンドや、統合運用管理ツールでは、それぞれ以下のように指定します。
JMSサーバは、1〜4のプロパティを取り込みます。優先順位は、後ろのものほど高くなっています。
プロパティのデフォルト値が定義されたファイルで、次の位置にあります。
${AS_INSTALL}/jmq/lib/props/broker/default.properties
Caution
利用者は直接編集を行わないで下さい。
インストール時に指定されたプロパティが格納されるファイルで、次の位置にあります。
${AS_INSTALL}/jmq/lib/props/broker/install.properties
Caution
利用者は直接編集を行わないで下さい。
ドメイン固有のJMSサーバに対するプロパティ設定を記述するファイルで、次の位置にあります。ファイルはドメイン生成時に作成されます。
${INSTANCE_ROOT}/jmq/instances/<JMSサーバインスタンス識別子>/props/config.properties
Memo
<JMSサーバインスタンス識別子>の既定値は「jmqbroker」です。
起動引数で指定したプロパティは、すべてのプロパティ設定ファイルに対して優先されます。
コネクションファクトリリソースは、Java EEアプリケーションからJNDIを通して利用します。項目の設定や、参照を行う場合、運用管理コマンドや、統合運用管理ツールでは、それぞれ以下のように指定します。
「
connection-factory-name」は、コネクションファクトリリソースの定義名で、JNDIの登録名になります。
物理的な送信先の設定や、項目の参照を行う場合、運用管理コマンドや、統合運用管理ツールでは、それぞれ以下のように指定します。「 physical-destination-name」は、送信先の定義名です。
送信先リソースは、Java EEアプリケーションからJNDIを通して利用します。項目の設定や、参照を行う場合、運用管理コマンドや、統合運用管理ツールでは、それぞれ以下のように指定します。
「
logical-destination-name」は、送信先リソースの定義名で、JNDIの登録名になります。
運用管理コマンド、統合運用管理ツールで制御できるMOの属性と、そのベースとなるJMSのプロパティ/属性一覧を示します。
JMSに関連するMOのうち、属性を設定できるものは、以下の5種類です。以降、各MOについて設定できる属性を説明します。
連携するJMSサーバに関する情報を定義します。
この定義は、運用管理コマンドのcreate-domainによるドメイン生成時に自動的に設定されます。
MOのdottednameは「server.jms-service」です。設定可能な属性や、操作については、「
MBean定義 >
jms-service」を参照してください。
なお、jms-serviceの「プロパティ」として設定できるのは、以下の項目です。
プロパティ名
|
説 明 | 既定値 |
---|---|---|
instance-name | JMSサーバインスタンス識別子を指定します。
※ 同一ホストでJMSサーバクラスタを構成する場合は、この値をホスト内で一意にしておく必要があります。 |
jmqbroker |
JMSサーバの起動、JMSサーバへの接続に必要な情報を定義します。
この定義は、create-domainコマンドによるドメイン生成時に自動的に設定されます。ポート番号については、create-domainコマンドの--fileオプションで指定するプロパティファイル (ドメイン設定ファイル) に、domain.jms.portとして指定することができます。
MOのdottednameは「server.jms-service.jms-host.default_JMS_host」です。設定可能な属性や、操作については、「
MBean定義 >
jms-host」を参照してください。
JNDIを通してアクセスするコネクションファクトリリソースを定義します。
この定義は、運用管理コマンドのcreate-jms-resource、統合運用管理ツールでは、「管理ドメイン [ <ホスト名> ] .<ドメイン名>.リソース.JMSリソース」の「コネクションファクトリリソースの作成」操作で作成されます。コネクションファクトリリソースの作成方法については、「
構築・運用 >
JMS >
JMSリソース」を参照してください。
コネクションファクトリリソース (jms-connection-factory) 作成時には、コネクタリソース (connector-resource)、コネクタコネクションプール (connector-connection-pool)、および、リソース参照 (resource-ref) を自動的に作成し、属性値を設定します。 属性値を変更する場合は、コネクションファクトリリソースのMOを介して行います。 各MOのdottednameは以下のとおりです。
設定可能な属性や、操作については、「 MBean定義」を参照してください。
Caution
コネクションファクトリリソース作成時、「プロパティ」に属性と同じ名前の項目を指定した場合は、「プロパティ」に指定されたものが優先されます。
物理的な送信先を定義します。
この定義は、運用管理コマンドのcreate-jmsdest、統合運用管理ツールでは、「管理ドメイン [ <ホスト名> ] .<ドメイン名>.アプリケーションサーバ.JMSサービス」の「送信先作成」操作で作成されます。送信先の作成方法については、「
構築・運用 >
JMS >
送信先の操作」を参照してください。
MOのdottednameは「server.jms-service.jms-physical-destination.destination-name」です。設定可能な属性や、操作については、「
MBean定義 >
jms-physical-destination」を参照してください。
Caution
送信先作成時、「プロパティ」に属性と同じ名前の項目を指定した場合は、「プロパティ」に指定されたものが優先されます。
JNDIを通してアクセスする送信先リソースを定義します。
この定義は、運用管理コマンドのcreate-jmsresource、統合運用管理ツールでは、「管理ドメイン [ <ホスト名> ] .<ドメイン名>.リソース.JMSリソース」の操作である「送信先リソースの作成」で作成されます。送信先リソースの作成方法については、「
構築・運用 >
JMS >
送信先の操作」を参照してください。
送信先リソース (jms-logical-destination) 作成時には、管理オブジェクトリソース (admin-object-resource) と、リソース参照 (resource-ref) を自動的に作成し、属性値を設定します。
属性値を変更する場合は、送信先リソースのMOを介して行います。
各MOのdottednameは以下のとおりです。
設定可能な属性や、操作については、「 MBean定義」を参照してください。
Caution
送信先リソース作成時、「プロパティ」に属性と同じ名前の項目を指定した場合は、「プロパティ」に指定されたものが優先されます。
ここでは、以下のプロパティや属性について説明します。
JMSサービスMOの「起動引数(start-args)」属性で指定する場合は、次の形式で指定します。
-D<プロパティ名>=<値> [-D<プロパティ名>=<値>] *
また、「config.properties」ファイルに定義する場合、設定ファイルの変更は、JMSサーバを停止した状態で行ってください。ファイルの格納場所、設定方法については、「
JMS設定項目・設定方法」を参照してください。
Memo
V11.1より、JMSサーバのプロパティ名は、"imq."で始まる名前になります。
(例) [V10まで]wojms.service.activelist → [V11.1以降]imq.service.activelist
プロパティ名
|
説 明 | 既定値 |
---|---|---|
imq.portmapper.backlog | 要求を拒否せずに、同時に処理可能な要求の最大数を指定します。 | 50 |
imq.producer.maxBatch | プロデューサが一度に送信できるメッセージの最大数を指定します。 | 1000 |
imq.message.expiration.interval | 有効期限が切れたメッセージを廃棄する間隔を秒単位で指定します。 | 60 |
imq.authentication.client.response.timeout | JMSサーバからの認証要求に対するクライアントの応答を待機する時間を秒単位で指定します。 | 180 |
プロパティ名
|
説 明 | 既定値 |
---|---|---|
imq.service.activelist | JMS起動時に活性化するサービス群を指定します。
jms:JMSのコネクションサービス ssljms:JMSのSSLコネクションサービス admin:管理用のコネクションサービス ssladmin:管理用のSSLコネクションサービス |
jms,admin |
imq.shared.connectionMonitor_limit | threadpool_modelにsharedを選択した場合に、コネクションを監視するスレッドの対象コネクションの最大数を指定します。-1は無制限です。 | Windows:64
Unix:512 |
imq.< svc>.min_threads | svcで示したコネクションサービスが使用するスレッドプールの最小数を指定します。
既定値はコネクションサービスにより異なります。 |
jms:10
ssljms:10 admin:4 ssladmin:4 |
imq.< svc>.max_threads | svcで示したコネクションサービスが使用するスレッドプールの最大数を指定します。
既定値はコネクションサービスにより異なります。 0より大きく、かつmin_threadsで指定した値より大きくする必要があります。 |
jms:1000
ssljms:500 admin:10 ssladmin:10 |
imq.< svc>.tcp.hostname | svcで示したサービスで使用するホスト名、もしくはIPアドレスを指定します。複数のネットワークインタフェース (NIC) を持つような場合に固定することができます。指定がない場合は、任意を意味します。 |
プロパティ名
|
説 明 | 既定値 |
---|---|---|
imq.persist.file.message.max_record_size | 組み込みのファイルストアで、メッセージストレージファイル (個別のファイルではない) に追加されるメッセージの最大サイズ (バイト、K バイト、または Mバイト単位) を指定します。
128,128bは128バイトを、128kは128Kバイト (128×1024=131072バイト)、128mは128Mバイト (128×1024×1024=134217728バイト) を表します。 |
1m |
imq.persist.file.message.filepool.cleanratio | 組み込みのファイルストアの場合に、クリーン状態 (サイズを 0 にする) で保持される送信先のファイルプールの空きファイルの割合 (%) を指定します。この値が大きいほど、作業中にファイルを削除するのに必要なオーバーヘッドが増えますが、ファイルプールに必要なディスク容量は小さくなります。 | 0 |
imq.persist.file.destination.message.filepool.limit | 組み込みのファイルストアの場合に、送信先のファイルプールで再利用できる空きファイルの最大数を指定します。この値が大きいほど、JMSサーバが永続データを処理する速度が速くなります。この値を超える空きファイルは削除されます。 | 100 |
imq.persist.file.message.cleanup | 組み込みのファイルストアで、JMSサーバのシャットダウン時に、送信先のファイルプール内の空きファイルを削除するかどうかを指定します。値をfalseに設定すると、JMSサーバのシャットダウンが速くなりますが、ファイルを格納するためのディスク容量がさらに必要になります。 | false |
imq.persist.file.sync.enabled | 永続処理でメモリ内の状態を物理的なストレージと同期させるかどうかを指定します。true の場合、システムクラッシュによるデータ損失は回避されますが、永続処理のパフォーマンスに負荷がかかります。 | false |
imq.persist.jdbc.retrycount | JDBCストア利用時のデータベースへの再接続試行回数を指定します。 | 10 |
imq.persist.jdbc.retryinterval | JDBCストア利用時のデータベースへの再接続遅延時間を秒単位で指定します。 | 10 |
プロパティ名
|
説 明 | 既定値 |
---|---|---|
imq.log.timezone | ログのタイムスタンプのタイムゾーンを指定します。識別子は、 java.util.TimeZone.getTimeZone() が使用しているものと同じです。 | |
imq.log.file.dirpath | ログファイルが格納されているディレクトリへのパスを指定します。デフォルト値は、install.propertiesファイルに定義されています。 | ${imq.instanceshome}/../../logs/jmq |
imq.log.file.filenum | ログファイルのバックアップ数を指定します。 | 9 |
imq.log.file.output | ログファイルに書き込むロギング情報のカテゴリを指定します。指定できる値は、 縦線 (|) で区切ったロギングのカテゴリ (ERROR, WARNING, INFO, DEBUG, DEBUGMED, DEBUGHIGH) のセットか、ALL または NONEです。
ALL:すべてのカテゴリを出力 NONE:出力しない |
ALL |
imq.log.error.dirpath | エラーログの出力ディレクトリへのパスを指定します。 | ${imq.log.file.dirpath} |
imq.log.error.filenum | エラーログファイルのバックアップ数を指定します。 | 9 |
imq.metrics.enabled | メトリックス情報を収集するかどうかを指定します。
true:収集する false:収集しない |
true |
imq.metrics.interval | メトリックス情報が報告される間隔を秒単位で指定します。-1は報告しません。 | -1 |
imq.log.dateformat | ログファイルのメッセージに付加する日付フォーマットを指定します。指定対象となるファイルは、jmqadmin.log、jmqerror.log、jmqmessage.log、jmqpacket.log、jmqserver.log です。 V9.3以前と同じ形式にする場合は、次の値を指定してください。
[yyyy-MM-dd HH:mm:ss,SSS] |
yyyy-MM-dd HH:mm:ss,SSS |
Memo
V11.1より、カテゴリ別のログ出力 (運用管理操作履歴、パケットログ、メッセージライフサイクルログ) を廃止しました。
ただし、パケットログについては、JMSサービスMOの「ログレベル」属性 (server.jms-service.loglevel) を DEBUGHIGH にすることで、JMSメッセージの送受信でやり取りされるパケット (V10までの、PACKET_MESSAGEに相当するもの) をJMSサーバのログ (jmqserver.log) に出力することが可能です。出力内容は、[ パケットログの出力形式 ] を参照してください。
パケットログの出力形式は、次のようになっています。
<タイムスタンプ> ... <コネクション情報> ------------------------------ <送受信種別> Packet: <パケットダンプ> ------------------------------ |
出力項目の概要は、次の通りです。
出力項目 | 説明 | ||||||
---|---|---|---|---|---|---|---|
タイムスタンプ | ログ出力時の時刻。yyyy-mm-dd HH:MM:SS,sssの形式 | ||||||
コネクション情報 | このパケットの送受信に使われたコネクションに関する情報 | ||||||
送受信種別 | このJMSサーバでの受信か、このJMSサーバからの送信かを示す記号
|
||||||
パケットダンプ | メッセージID等、パケットの詳細情報 |
プロパティ名
|
説 明 | 既定値 |
---|---|---|
imq.autocreate.topic.consumerFlowLimit | 自動生成されたTopicに接続されたConsumerが一回の送信処理で受信できるメッセージの最大数を指定します。 | 1000 |
imq.autocreate.queue.consumerFlowLimit | 自動生成されたQueueに接続されたConsumerが一回の送信処理で受信できるメッセージの最大数を指定します。 | 100 |
imq.autocreate.queue.maxNumActiveConsumers | 自動生成されたQueueでメッセージを受信するこのできるConsumerの最大数を指定します。-1は無制限です。 | -1 |
imq.autocreate.queue.maxNumBackupConsumers | 自動生成されたQueueで待機状態のConsumerの数を指定します。-1は無制限です。 | 0 |
imq.autocreate.destination.maxNumMsgs | 自動生成される送信先の最大メッセージ数を指定します。-1は無制限です。 | 100000 |
imq.autocreate.destination.maxTotalMsgBytes | 自動生成される送信先の最大メッセージサイズ (バイト、K バイト、または Mバイト単位) を指定します。-1は無制限です。
128,128bは128バイトを、128kは128Kバイト (128×1024=131072バイト)、128mは128Mバイト (128×1024×1024=134217728バイト) を表します。 |
10m |
imq.autocreate.destination.maxNumProducers | 自動生成される送信先に接続可能なプロデューサ数を指定します。-1は無制限です。 | 100 |
imq.autocreate.destination.maxBytesPerMsg | 自動生成される送信先の1メッセージ当たりの最大サイズ (バイト、K バイト、または Mバイト単位) を指定します。-1は無制限です。
128,128bは128バイトを、128kは128Kバイト (128×1024=131072バイト)、128mは128Mバイト (128×1024×1024=134217728バイト) を表します。 |
10k |
imq.autocreate.destination.limitBehavior | 自動生成される送信先に対して新しいメッセージが届いたときに、送信先のメモリ制限のしきい値に到達していた場合のJMSサーバの振る舞いを指定します。
FLOW_CONTROL : プロデューサとの間でフロー制御 (低速化) を行います。 REMOVE_OLDEST : 最古のメッセージを破棄します (プロデューサがメッセージ削除の通知を受け取ることはありません)。REMOVE_LOW_PRIORITY : メッセージの有効期限に従い優先度が最低のメッセージを破棄します (プロデューサがメッセージ削除の通知を受け取ることはありません)。 REJECT_NEWEST : 最新のメッセージを拒否します (永続メッセージの場合はプロデューサにメッセージ拒否の例外が発生しますが、非永続メッセージの場合には発生しません)。 |
REJECT_NEWEST |
プロパティ名
|
説 明 | 既定値 |
---|---|---|
imq.ping.enabled | クライアントとの接続を監視するか否かを指定します。
true:行う false:行わない |
true |
imq.ping.interval | クライアントとの接続を監視する間隔を秒単位で指定します。 | 120 |
JMSクライアントのプロパティの一覧を示します。これらのプロパティは、非Java EE環境下で動作するJavaアプリケーションに有効であり、Javaシステムプロパティとして設定します。
ログの利用方法については、「 JMSクライアントのログ出力」を参照してください。
プロパティ名
|
説 明 | 既定値 |
---|---|---|
wojms.client.logger.level | JMSクライアントのログを採取する際のログレベル (NONE、ERROR、WARNING、INFO、DEBUG、DEBUGMED、DEBUGHIGHのいずれか) を指定します。
NONE:出力しない |
NONE |
wojms.client.logger.file | wojms.client.logger.level プロパティでログレベルが指定された場合に、JMSクライアントのログを採取する際のログファイル名を指定します。ログレベルのみが指定され、ログファイル名が指定されていない場合は、標準出力に出力します。 | |
wojms.client.logger.size | wojms.client.logger.file プロパティでログファイル名が指定された場合に、出力先ファイルを切り替えるファイルサイズをバイト単位で指定します。-1は出力先の切替を行いません。 | 1020000 |
wojms.client.logger.num | wojms.client.logger.file プロパティでログファイル名が指定された場合に、ログファイルのバックアップ数を指定します。 | 2 |
設定は、${AS_INSTALL}/jmq/etc/wojmscrt.conf ファイルで行います。
プロパティ名 |
説 明 | 既定値 |
---|---|---|
java-classpath | アプリケーション固有で利用する、Java クラスや jar ファイルを 環境変数 CLASSPATH 形式で指定します。 C言語ライブラリでは JVM を生成する際に、ここで指定した Java クラスを 優先的に利用するように構成します。 | |
wojms-options | JMS クライアントのプロパティを指定します。 | |
jvm-options | Java VM に渡す引数を指定します。 | |
otx-jars | JMSクライアントから利用するWebOTXのjarファイルが、${AS_INSTALL}からの相対パスで指定されています。変更しないでください。 | jmq/lib/jmqclient.jar:lib/javaee.jar:lib/gf-client.jar |
wojms-logsize | ネイティブログ ( JVM 生成前や JVM のエラーが発生した場合にメッセージが出力されるログ ) の最大サイズを指定します。 | 1048576 (1MB) |
JMSサーバのその他の設定項目、および設定方法について説明します。
ファイルストアを利用するための設定について説明します。
属性名 | 説明 | 既定値 |
---|---|---|
storeType | 永続ストアタイプを指定します。
file:ファイルストア |
file |
インストール直後は、ファイルストアを利用する設定になっています。関連する、JMSサーバの各プロパティにはデフォルト値が設定されていますので、ご利用になるシステムに合わせて設定値を変更してください。ファイルストアをご利用になるためのプロパティの詳細については、「 JMSのプロパティ/属性一覧 > JMSサーバのプロパティ」-「 永続ストアに関するプロパティ」を参照してください。
Caution
ストアを変更 (ファイルストア⇔JDBCストア) する場合、それまでに永続化された情報 (メッセージ、送信先、永続サブスクリプション、トランザクション) は、変更先のストアには引き継がれません。
JDBCストアを利用するための設定について説明します。
インストール直後は、ファイルストアを利用する設定になっています。JDBCストアを利用する場合は、次の手順で設定を変更してください。
属性名 | 説明 |
---|---|
storeType | 永続ストアタイプを指定します。指定可能な値は次のとおりです。
file:ファイルストア oracle:JDBCストア (Oracle) postgresql:JDBCストア (PostgreSQL) |
jdbcStoreDriver | JDBCドライバのクラス名 |
jdbcStoreURL | JDBC URL |
jdbcStoreUser | ユーザ名 |
jdbcStorePassword | パスワード |
# jmqdbmgr create tbl -otxdomain domain1
Memo
jmqdbmgrコマンドを実行する際は、-otxdomainオプションにより、ドメイン名の指定が必要です。
jmqdbmgrコマンドの詳細については、「
コマンド >
JMS >
jmqdbmgr」を参照してください。
JMS クライアントからの操作 (コネクション、送信先、送信先自動作成) に対するアクセス制御は、次の場所にあるアクセス制御プロパティファイルに定義します。
${INSTANCE_ROOT}/jmq/instances/jmqbroker/etc/accesscontrol.properties
定義変更は、JMSサービスの再起動により反映されます。
コネクションサービスへの権限を定義します。
要素
|
説明 |
---|---|
resourceVariant | コネクションのタイプを指定します。
NORMAL ADMIN |
access | アクセス制御を指定します。
allow deny |
principalType | 制御を受ける対象者を指定します。
user group |
principals | 権限の制御を受ける対象を指定します。
principalTypeがuserの場合は、ユーザ名 (複数の場合はカンマで区切られたリスト) を指定します。 principalTypeがgroupの場合は、グループ名 (複数の場合はカンマで区切られたリスト) を指定します。 両者とも、全てを対象とする場合には”*”を使用します。 |
デフォルトでは、通常のコネクションは全てのユーザに権限が、管理用のコネクションはadminグループにのみ権限が与えられています。
たとえば、通常のコネクション確立について、ユーザxxxを拒否するには、次の記述を追加します。
送信先に対する権限を定義します。
要素
|
説明 |
---|---|
resourceType | 送信先のタイプを指定します。
queue topic |
resourceVariant | 送信先の名前、もしくはすべての送信先を意味する”*”を指定します。 |
operation | クライアントのタイプを指定します。
produce consume browse |
access | アクセス制御を指定します。
allow deny |
principalType | 制御を受ける対象者を指定します。
user group |
デフォルトでは、すべてに権限が与えられています。
たとえば、トピックxxxからのメッセージ受信について、グループyyyを拒否するには、次の記述を追加します。
送信先の自動作成の権限を定義します。
要素
|
説明 |
---|---|
resourceType | 送信先のタイプを指定します。
queue topic |
access | アクセス制御を指定します。
allow deny |
principalType | 制御を受ける対象を指定します。
user group |
デフォルトでは、すべてに権限が与えられています。
たとえば、topicの自動作成について、ユーザxxxを拒否するには、次の記述を追加します。
JMSサーバとクライアントアプリケーションとの間、JMSサーバと管理ツールとの間で送受信されるメッセージをSSLで暗号化するために必要な設定について説明します。
前者はssljmsコネクションサービス、後者はssladminコネクションサービスが対象です。
${AS_INSTALL}/jmq/etc ディレクトリが存在しない場合は、作成してください。
JDK付属の keytool コマンドを利用し、次を実行して、JMSサーバの自己署名型証明書を生成してください。
keytool -genkey -keyalg "RSA" -alias jmq -keystore ${AS_INSTALL}/jmq/etc/keystore -v
証明書が格納されるキーストアの位置は次の場所となります。
${AS_INSTALL}/jmq/etc/keystore
運用管理コマンドで指定する場合は、JMSサービスの「start-args」属性に、統合運用管理ツールで指定する場合は、JMSサービスのMO属性「起動引数」に上記を設定してください。
imq.service.activelist=jms,admin,ssljms,ssladmin
実際に有効になったかどうかは、JMSサーバ再起動後に、jmqcmd list svcコマンドで確認することができます。jmqcmd list svcコマンドの詳細は、「
コマンド >
JMS >
jmqcmd >
list svc」を参照してください。
属性名 | 説明 | 既定値 |
---|---|---|
keystorePassword | SSL ベースのサービスの場合に、キーストアのパスワードを指定します。 |
otxadmin> set server.resources.jms-resource.jms-connection-factory.jms/MyCF.property.MessageServiceAddressList=localhost:9700/ssljms
Standard において、TPモニタ上でMessage-Driven Bean (MDB)を起動する場合の設定について説明します。
MDBでTopicのマルチコンシューマ負荷分散を利用するには、クライアント識別子とその共有フラグを以下に示すいずれかの方法で設定する必要があります。
プロパティ
|
値 |
---|---|
clientId | クライアント識別子 |
enableSharedClientID | true |
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar> <enterprise-beans> <message-driven> <ejb-name>MyMDB</ejb-name> ・・・・・ <activation-config> <activation-config-property> <activation-config-property-name> clientId</activation-config-property-name> <activation-config-property-value> MyClientID</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name> enableSharedClientID</activation-config-property-name> <activation-config-property-value> true</activation-config-property-value> </activation-config-property> ・・・・・ </activation-config> </message-driven> </enterprise-beans> </ejb-jar> |
プロパティ
|
値 |
---|---|
clientId | クライアント識別子 |
enableSharedClientID | true |
@MessageDriven(
activationConfig = { @ActivationConfigProperty(propertyName="clientId", propertyValue="MyClientID"), @ActivationConfigProperty(propertyName="enableSharedClientID", propertyValue="true"), ・・・・・ } ) public class MyMDB implements MessageListener { public void onMessage(Message msg) {・・・・・} } |
プロパティ
|
設定値 |
---|---|
wojmsConfiguredClientID | クライアント識別子 |
wojmsEnableSharedClientID | true |
ここでは、ロールバックされたメッセージの再配信に関する設定について説明します。
再配信回数の上限は、送信先か、JMSサービスのMOの属性で指定します。送信先で指定した場合は、その送信先に接続したコンシューマに対して有効になり、JMSサービスで指定した場合は、JMSサーバで動作するコンシューマ全体に対して有効になります。既定値以外の値が設定されていた場合の優先順位は、高いものから、送信先、JMSサービスの設定となります。
server.jms-physical-destination. physical-destination-name:属性名 | 説明 | 既定値 |
---|---|---|
wojmsRedeliveryLimit | 再配信回数上限。メッセージ再配信回数の上限を指定します。-1は無制限を、0は再配信なしを意味します。 | -1 (無制限) |
Memo
送信先、JMSサービスともに属性名は同じです。
再配信の遅延時間は、コネクションファクトリリソース、送信先、JMSサービスのMOの属性で指定します。また、コンシューマプログラム向けに用意しているAPI (WebOTX V5よりサポート) で、セッション単位に指定することも可能です。既定値以外の値が設定されていた場合の優先順位は、高いものから、セッション単位、コネクションファクトリリソース、送信先、JMSサービスの設定となります。
server.resources.jms-resource.jms-connection-factory. connection-factory-name:属性名 | 説明 | 既定値 |
---|---|---|
wojmsRedeliveryDelay | 再配信遅延時間。メッセージ再配信で、配信の遅延時間を秒単位で指定します。0は、待ち合わせ無しを意味します。 | 0 (待ち合わせ無し) |
Memo
コネクションファクトリリソース、送信先、JMSサービスともに属性名は同じです。
セッション単位で指定する場合については、 [ リファレンス > リソース > JMS > 拡張インタフェース ] を参照してください。
MDBに対して再配信遅延時間を指定するには、以下に示す方法があります。優先順位は、高いものから順に、1、2、3 となっており、以下のいずれも指定されていない場合は、前述の指定に従って再配信されます。
プロパティ
|
説明 |
---|---|
RedeliveryDelay | 再配信遅延時間 (秒) |
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar> <enterprise-beans> <message-driven> <ejb-name>MyMDB</ejb-name> ・・・・・ <activation-config> <activation-config-property> <activation-config-property-name> RedeliveryDelay</activation-config-property-name> <activation-config-property-value> 10</activation-config-property-value> </activation-config-property> ・・・・・ </activation-config> </message-driven> </enterprise-beans> </ejb-jar> |
プロパティ
|
説明 |
---|---|
RedeliveryDelay | 再配信遅延時間 (秒) |
@MessageDriven(
activationConfig = { @ActivationConfigProperty(propertyName="RedeliveryDelay", propertyValue="10"), ・・・・・ } ) public class MyMDB implements MessageListener { public void onMessage(Message msg) {・・・・・} } |
プロパティ
|
説明 |
---|---|
wojmsRedeliveryDelay | 再配信遅延時間 (秒) |
ここでは、破棄メッセージの転送に関する設定について説明します。「破棄メッセージ」とは、不達メッセージ (再配信回数を超過したメッセージ) や、有効期限切れのメッセージのことをさします。
属性名 | 説明 | 既定値 |
---|---|---|
wojmsRedeliveryDestination | 不達メッセージ転送先。再配信回数を超過したメッセージを転送する送信先名を指定します。ここに指定する送信先は、あらかじめ作成しておく必要があります (自動的に作成されません)。 |
Memo
送信先、JMSサービスともに属性名は同じです。
属性名 | 説明 | 既定値 |
---|---|---|
wojmsExpirationDestination | 有効期限切れメッセージを転送する送信先名 |
フィールド名
|
値 |
---|---|
JMSCorrelationID | 変更しません。 |
JMSDeliveryMode | PERSISTENTに変更します。
不達メッセージの場合、元の情報は、WOJMSOriginalPersistentにBoolean値で設定されます。trueはPERSISTENT、falseはNON_PERSISTENTです。 |
JMSDestination | 転送先の送信先に変更します。
元の情報は、WOJMSOriginalDestinationNameに送信先名を含めて設定されます。 |
JMSExpiration | クリアします。
不達メッセージの場合、元の情報は、WOJMSOriginalExpirationに設定されます。 |
JMSMessageID | 変更しません。 |
JMSPriority | 変更しません。 |
JMSRedelivered | 変更しません。 |
JMSReplyTo | 変更しません。 |
JMSTimestamp | 移動した時刻に変更します。
不達メッセージの場合、元の情報は、WOJMSOriginalTimeStampに設定されます。 |
JMSType | 変更しません。 |
フィールド名
|
値 |
---|---|
WOJMSDelayTime | 削除します。
不達メッセージの場合、元の情報は、WOJMSOriginalDelayTimeに設定されます。 |
WOJMSOriginalMessageID | 転送前のJMSMessageIDを格納します。 |
WOJMSOriginalDestinationName | 転送前のJMSDestinationから取得した送信先名と送信先タイプを連結した文字列を格納します。 |
WOJMSDeletedReason | メッセージの削除理由を文字列で格納します。
不達メッセージの設定値: DELETED 有効期限切れメッセージの設定値: EXPIRED |
WOJMSOriginalExpiration | 不達メッセージの場合、転送前のJMSExpirationの値を格納します。 |
WOJMSOriginalPersistent | 不達メッセージの場合、転送前のJMSDeliveryModeの値をBoolean値で格納します。trueはPERSISTENT、falseはNON_PERSISTENTです。 |
WOJMSOriginalTimeStamp | 不達メッセージの場合、転送前のJMSTimestampの値を格納します。 |
WOJMSOriginalDelayTime | 不達メッセージの場合、転送前のWOJMSDelayTimeの値を格納します。 |
非Java EE環境下で動作するJavaアプリケーションでは、実行時にJavaシステムプロパティを設定することにより、ログ出力が可能です。ログは、障害解析などに利用します。
ログを出力するには、以下をJavaシステムプロパティとして指定します。
wojms.client.logger.level
wojms.client.logger.file
wojms.client.logger.size
wojms.client.logger.num
各プロパティの詳細については、「 JMSクライアントのプロパティ」を参照してください。
Java EE環境で、JMSを分散トランザクションに参加させる場合、トランザクションサービスのJCAリソースを登録する必要があります。
JCAリソースの登録方法については、「
構築・運用 >
Transactionサービス >
リソースの登録・削除」を参照してください。
ここでは、2つのJMSサーバで構成されるJMSサーバクラスタの設定方法について説明します。
設定は、以下のように、host1のdomain1で起動するJMSサーバ (JMS1) と、host2のdomain1で起動するJMSサーバ (JMS2) でJMSサーバクラスタを構成するものとします。また、マスターブローカとして、host1-domain1上のJMSサーバを指定します。
項目 | 設定値 |
---|---|
JMSサーバクラスタの使用 | true (チェックする) |
クラスタに属するJMSサーバのアドレスリスト | host1:9700,host2:9700 |
マスターブローカのアドレス | host1:9700 |
otxadmin> set server.jms-service.enableCluster=true otxadmin> set server.jms-service.clusterBrokerList=host1:9700,host2:9700 otxadmin> set server.jms-service.clusterMasterBroker=host1:9700
JMSサーバクラスタなどで、接続先の分散を行うためにアドレスリストを使用することができます。アドレスリストは、コネクションファクトリリソースの属性として設定します。
server.resources.jms-resource.jms-connection-factory. connection-factory-name:属性名 | 説明 | 既定値 |
---|---|---|
wojmsAddressList | 接続先のリストを指定します。
この値を設定した場合は、「JMSサーバのホスト名」 (wojmsBrokerHostName) と、「JMSサーバのホストのポート番号」 (wojmsBrokerHostPort) の設定は無視されますので、必要に応じてこの接続先をリストに含めてください。 アドレスの構文は、 [ hostName ] [ :port ] で、複数のアドレスを指定する場合は、「,」で区切ります。 |
|
wojmsAddressListBehavior | アドレスリストから、接続先を選択する方法を指定します。
PRIORITY:アドレスリストに指定された順番 RANDOM:ランダムに選択 接続障害後の再接続は、いずれの場合も、接続がエラーになったJMSサーバに対するアドレスから始まります。 |
PRIORITY |
wojmsAddressListIterations | 接続の試行を中止して例外を通知するまでの、アドレスリストの繰り返し回数を指定します。 | 1 |
次に、アドレスリストを設定した場合の動作について説明します。
JMSクライアントランタイムは、wojmsAddresListBehaviorの設定に応じて、wojmsAddressListから接続先を選択し接続を行います。最初に選択したアドレスで接続できなかった場合は、wojmsAddressListから「次の」アドレスを選択して接続を試みます。それでも接続できなければ「次の」アドレス、と進めていき、wojmsAddressListIterations回アドレスリストを繰り返して接続できなければ、例外を発生させるようになっています。
属性名 | 説明 | 既定値 |
---|---|---|
supportOrderedRedelivery | メッセージ再配信時の順序保証を行うかどうかを指定します。
true:再配信時の順序保証を行います。接続できるコンシューマ数は1になります。 false:再配信時の順序保証を行いません。 |
false (再配信時の順序保証はしない) |
Caution
順序保証の設定を変更する場合は、送信先のコンシューマ数が 1 以下の状態で行ってください。 複数のコンシューマが接続しているときに順序保証の設定を有効にしても、設定は無視されます。
JMS リソースアダプタの ActivationSpec に設定可能なプロパティは次のとおりです。
プロパティ名 | 説 明 | 既定値 |
---|---|---|
destination | 送信先名を指定します。 | |
destinationType | 送信先のタイプを指定します。
javax.jms.Queue:キュー javax.jms.Topic:トピック |
|
messageSelector | メッセージセレクタを指定します。 | |
subscriptionName | Topicサブスクリプション名を指定します。 | |
subscriptionDurability | Topicサブスクリプションの持続性を指定します。
Durable:持続性 NonDurable:非持続性 |
NonDurable |
clientId | クライアントIDを指定します。 | |
acknowledgeMode | 確認応答モードを指定します。
Auto-acknowledge: Auto-acknowledge モード Dups-ok-acknowledge: Dups-OK-acknowledge モード |
Auto-acknowledge |
endpointExceptionRedeliveryAttempts | MDBで実行時例外が発生した場合にアダプタ内で再配信する回数を指定します。コンテナ管理トランザクション NotSupported あるいは、Bean管理トランザクションの場合に有効になります。 | 1 |
redeliveryDelay | MDBで実行時例外が発生した場合にアダプタ内で再配信する間隔 (秒) を指定します。0は待ち合わせなしを意味します。 | 0 |
endpointPoolMaxSize | エンドポイントプールで保持されるエンドポイントの最大数を指定します。 | 15 |
endpointPoolSteadySize | エンドポイントプールで保持されるエンドポイント初期値を指定します。 | 10 |