31.6. IBM MQ リソースアダプターのデプロイ
IBM MQ について
IBM MQ は、IBM のメッセージ指向ミドルウェア (MOM) 製品で、分散システム上のアプリケーションが互いに通信できるようにします。これは、メッセージとメッセージキューを使用して実行できます。IBM MQ は、メッセージキューにメッセージを配信し、メッセージチャネルを使用してデータを他のキューマネージャーへ転送します。IBM MQ の詳細は、IBM の製品 Web サイトの IBM MQ を参照してください。
概要
IBM MQ は、JBoss EAP 7.3 の外部 JMS プロバイダーとして設定できます。このセクションでは、JBoss EAP で IBM MQ リソースアダプターをデプロイして設定する手順を説明します。このデプロイメントと設定は、管理 CLI ツールまたは Web ベースの管理コンソールを使用して実行できます。IBM MQ のサポートされる設定に関する最新情報は、JBoss EAP supported configurations を参照してください。
設定の変更を有効にするには、IBM MQ リソースアダプターの設定後にシステムを再起動する必要があります。
前提条件
作業を開始する前に、IBM MQ リソースアダプターのバージョンを検証し、その設定プロパティーを理解する必要があります。
-
IBM MQ リソースアダプターは、
wmq.jmsra.rarというリソースアーカイブ (RAR) ファイルとして提供されます。wmq.jmsra.rarファイルは、/opt/mqm/java/lib/jca/wmq.jmsra.rarから取得できます。JBoss EAP の各リリースでサポートされる特定のバージョンに関する詳細は、JBoss EAP supported configurations を参照してください。 以下の IBM MQ 設定値を知っている必要があります。これらの値については、IBM MQ 製品のドキュメントを参照してください。
- MQ_QUEUE_MANAGER: IBM MQ キューマネージャーの名前
- MQ_HOST_NAME: IBM MQ キューマネージャーへの接続に使用されるホスト名
- MQ_CHANNEL_NAME: IBM MQ キューマネージャーへの接続に使用されるサーバーチャネル
- MQ_QUEUE_NAME: 宛先キューの名前
- MQ_TOPIC_NAME: 宛先トピックの名前
- MQ_PORT: IBM MQ キューマネージャーへの接続に使用されるポート
- MQ_CLIENT: トランスポートタイプ
送信接続の場合は、以下の設定値も理解している必要があります。
- MQ_CONNECTIONFACTORY_NAME: リモートシステムへの接続を提供する接続ファクトリーインスタンスの名前
手順
以下は、IBM のデフォルト設定であり、変更される可能性があります。詳細は IBM MQ のドキュメントを参照してください。
-
まず、
wmq.jmsra.rarファイルをEAP_HOME/standalone/deployments/ディレクトリーにコピーして、リソースアダプターを手動でデプロイします。 次に、管理 CLI を使用してリソースアダプターを追加し、設定します。
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar:add(archive=wmq.jmsra.rar, transaction-support=XATransaction)transaction-support要素がXATransactionに設定されたことに注意してください。トランザクションを使用する場合は、以下の例にあるように、XA リカバリーデータソースのセキュリティードメインを提供してください。/subsystem=resource-adapters/resource-adapter=test/connection-definitions=test:write-attribute(name=recovery-security-domain,value=myDomain)XA リカバリーに関する詳細は、JBoss EAP 設定ガイドの XA リカバリーの設定 を参照してください。
トランザクション以外のデプロイメントの場合は、
transaction-supportの値をNoTransactionに変更します。/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar:add(archive=wmq.jmsra.rar, transaction-support=NoTransaction)リソースアダプターが作成されたので、必要な設定要素を追加できます。
キューの
admin-objectを追加し、そのプロパティーを設定します。/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/admin-objects=queue-ao:add(class-name=com.ibm.mq.connector.outbound.MQQueueProxy, jndi-name=java:jboss/MQ_QUEUE_NAME) /subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/admin-objects=queue-ao/config-properties=baseQueueName:add(value=MQ_QUEUE_NAME) /subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/admin-objects=queue-ao/config-properties=baseQueueManagerName:add(value=MQ_QUEUE_MANAGER)トピックの
admin-objectを追加し、そのプロパティーを設定します。/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/admin-objects=topic-ao:add(class-name=com.ibm.mq.connector.outbound.MQTopicProxy, jndi-name=java:jboss/MQ_TOPIC_NAME) /subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/admin-objects=topic-ao/config-properties=baseTopicName:add(value=MQ_TOPIC_NAME) /subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/admin-objects=topic-ao/config-properties=brokerPubQueueManager:add(value=MQ_QUEUE_MANAGER)管理接続ファクトリーの接続定義を追加し、そのプロパティーを設定します。
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=mq-cd:add(class-name=com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl, jndi-name=java:jboss/MQ_CONNECTIONFACTORY_NAME, tracking=false) /subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=mq-cd/config-properties=hostName:add(value=MQ_HOST_NAME) /subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=mq-cd/config-properties=port:add(value=MQ_PORT) /subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=mq-cd/config-properties=channel:add(value=MQ_CHANNEL_NAME) /subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=mq-cd/config-properties=transportType:add(value=MQ_CLIENT) /subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=mq-cd/config-properties=queueManager:add(value=MQ_QUEUE_MANAGER)
JBoss EAP の EJB3 メッセージングシステムでデフォルトのプロバイダーを JBoss EAP 7 メッセージングから IBM MQ に変更する場合は、以下のように管理 CLI を使用して
ejb3サブシステムを変更します。/subsystem=ejb3:write-attribute(name=default-resource-adapter-name,value=wmq.jmsra.rar)以下のように、MDB コードに
@ActivationConfigPropertyアノテーションと@ResourceAdapterアノテーションを設定します。@MessageDriven(name="IbmMqMdb", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "useJNDI", propertyValue = "false"), @ActivationConfigProperty(propertyName = "hostName", propertyValue = "MQ_HOST_NAME"), @ActivationConfigProperty(propertyName = "port", propertyValue = "MQ_PORT"), @ActivationConfigProperty(propertyName = "channel", propertyValue = "MQ_CHANNEL_NAME"), @ActivationConfigProperty(propertyName = "queueManager", propertyValue = "MQ_QUEUE_MANAGER"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "MQ_QUEUE_NAME"), @ActivationConfigProperty(propertyName = "transportType", propertyValue = "MQ_CLIENT") }) @ResourceAdapter(value = "wmq.jmsra-VERSION.rar") @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) public class IbmMqMdb implements MessageListener { }@ResourceAdapter値の VERSION は、RAR の名前に含まれる実際のバージョンに置き換えてください。リソースアダプターをアクティベートします。
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar:activate()
31.6.1. IBM MQ リソースアダプターの制限と既知の問題 リンクのコピーリンクがクリップボードにコピーされました!
以下の表に、IBM MQ リソースアダプターの既知の問題をまとめています。バージョン列のチェックマーク (✔) は、そのバージョンのリソースアダプターに問題があることを示しています。
| JIRA | 問題の説明 | IBM MQ 8 | IBM MQ 9 |
|---|---|---|---|
|
IBM MQ リソースアダプターは、 | ✔ | ✔ | |
| 以下の制限は、IBM MQ のメッセージプロパティー名に適用されます。
リソースアダプターの各バージョンに対するメッセージプロパティー名の制限の完全なリストは、IBM Knowledge Center の Web サイトの IBM MQ バージョン 8.0 のプロパティー名の制限 と IBM MQ バージョン 9.0 のプロパティー名の制限 を参照してください。 | ✔ | ✔ | |
|
| ✔ | ✔ | |
|
IBM MQ リソースアダプターを使用して
| ✔ | ✔ | |
|
IBM MQ リソースアダプターは、接続開始前からキューとトピックからメッセージを読み取ることができます。これは、接続開始前にコンシューマーがメッセージを消費できることを意味します。この問題を回避するには、 | ✔ | ✔ | |
|
以下のコード例では、
| ✔ | ✔ | |
|
JMS 仕様によると、 | ✔ | ✔ | |
|
| ✔ | ✔ | |
|
| ✔ | ✔ | |
|
無効な認証情報が使用されると、IBM MQ リソースアダプターは、
以下は、この問題を引き起こす可能性があるコードの例です。
| ✔ | ✔ | |
|
これは、キューまたはトピックルックアップで使用される JNDI 名が | ✔ | ✔ | |
|
| ✔ | ✔ | |
|
| ✔ | ✔ | |
|
接続を閉じた直後に、同じ
この問題は、同じ | ✔ | ✔ | |
| コンテナー管理トランザクション (CMT) において、ステートフルセッション Bean がトピックにメッセージを送信しようとすると、メッセージ送信が失敗し、以下のメッセージが示されます。
スタックトレースは、以下の例外によって発生したことを示しています。
| ✔ | ✔ | |
|
IBM MQ v9.0.0.4 リソースアダプター
IBM MQ v9.0.0.4 リソースアダプターは、JBoss EAP 7.3 の Jakarta Messaging プロバイダーテストの一部としてテストされています。この警告メッセージを無視するか、
| ✔ | ✔ |