IBM MQ Connector - Mule 4

IBM MQ Connector v1.6

IBM MQ 用 Anypoint Connector (IBM MQ Connector) を使用すると、IBM MQ JMS 実装を使用している IBM MQ ブローカーに対してメッセージを送信できます。 この主な機能は次のとおりです。

  • 特定の宛先でのパブリッシュ/サブスクライブパターンのサポート。

  • 特定の宛先でのリスン/応答パターンのサポート。

  • 特定の宛先での固定または一時応答キューを使用した Publish-Consume 応答パターンのサポート。

  • メッセージの非ブロックパブリッシュとコンシューム。

リリースノート: IBM MQ Connector リリースノート
Exchange: IBM MQ Connector

接続モード

IBM 設定を作成する際には、使用する IBM 接続モード​を選択します。

IBM MQ 8 の時点では、使用できる接続モードは​クライアント​と​バインディング​の 2 つのみです。

クライアント接続モード

クライアント接続モードでは、Mule アプリケーションが実行されているシステムと同じシステムまたは他のシステムで動作している IBM MQ キューマネージャーに接続できます。 どちらの場合でも、IBM MQ Connector は IBM MQ キューマネージャーに TCP/IP 経由で接続します。

この接続モードでは、次のパラメーターを設定できます。

パラメーター 必須 デフォルト値 説明

Host (ホスト)

はい

IBM MQ ブローカーが動作しているホスト。

Port (ポート)

いいえ

1414

キューマネージャーのリスナーポート。

Queue Manager (キューマネージャー)

いいえ

チャネル定義を選択する際に使用するキューマネージャー。

Channel (チャネル)

いいえ

接続先のチャネル名。

Connection Name List (接続名リスト)

いいえ

接続が失われたときにクライアントが再接続を試みるホスト。
接続名リストでは、ホストと IP ポートのペアをカンマで区切って指定します。
例:​ ​0.0.0.0(1414),somehost.domain.com(1415)

クライアント接続
Figure 1. Studio でのクライアント接続設定
XML でのクライアント接続設定
<ibm-mq:config name="IBM_MQ_Config">
 <ibm-mq:connection >
   <ibm-mq:connection-mode >
	 	<ibm-mq:client host="0.0.0.0" port="1414" queueManager="QM1" channel="DEV.ADMIN.SVRCONN" />
		</ibm-mq:connection-mode>
	</ibm-mq:connection>
</ibm-mq:config>

バインディング接続モード

バインディング接続モードでは、同じシステムで動作している IBM MQ ブローカーに自動的に接続します。

このモード専用のパラメーターは、接続先のキューマネージャーで、必要に応じて設定します。IBM MQ ブローカーでデフォルトのキューマネージャーが設定されている場合は、この設定は必須ではありません。

クライアント接続
Figure 2. Studio でのバインディング接続設定
XML でのバインディング接続設定
<ibm-mq:config name="IBM_MQ_Config">
  <ibm-mq:connection >
    <ibm-mq:connection-mode >
      <ibm-mq:binding queueManager="QM1" />
    </ibm-mq:connection-mode>
  </ibm-mq:connection>
</ibm-mq:config>

グローバルデフォルトの定義

IBM MQ の ​config​ では、メッセージをコンシュームまたはパブリッシュする際にデフォルトとして使用される複数のパラメーターを定義できます。これにより、設定に関連付けられているすべての操作に対してグローバルデフォルト動作を定義しておいて、カスタム動作を必要とする操作でのみパラメーターを変更することができます。

たとえば、この設定に関連付けられているすべての操作でメッセージをコンシュームする際のデフォルトの ​selector​ 動作を定義することができます。

<ibm-mq:config name="IBM_MQ_Config">
  <ibm-mq:connection/>
  <ibm-mq:consumer-config selector="JMSType = `INVOICE`"/>
  <ibm-mq:producer-config timeToLive="60000"/>
</ibm-mq:config>

この場合、この設定に関連付けられているすべての consume または listener 操作はデフォルトで ​selector​ を使用し、Publish または Publish-Consume が発生するたびに、送信されるメッセージの TTL は 60 秒に設定されます。

これらのすべてのプロパティは、必要であれば操作レベルで変更できます。 短い TTL でメッセージをパブリッシュするには、次の設定例を使用してパラメーターを変更します。

<ibm-mq:publish config-ref="IBM_MQ_Config" timeToLive="10000"/>

JMS 仕様の選択

主要な共通パラメーターである JMS 仕様は、サポートされるバージョンである 2.0 と 1.1 のどちらかを選択します。この接続に関連付けられるブローカー実装でサポートされる仕様を選択しないと、接続が失敗します。

JMS 2.0 のみで利用可能な機能は、他の仕様では動作しません。

認証用のログイン情報の提供

認証された接続を確立するには、接続要素でユーザー名とパスワードを設定する必要があります。

<ibm-mq:config name="IBM_MQ_Config">
	<ibm-mq:connection username="<username>" password="<password>" >
		<ibm-mq:connection-mode >
			<ibm-mq:client
			host="0.0.0.0"
			port="1414"
			queueManager="QM1"
			channel="DEV.ADMIN.SVRCONN" />
		</ibm-mq:connection-mode>
	</ibm-mq:connection>
</ibm-mq:config>

接続キャッシングの設定

ブローカーに接続して必要な操作を実行するため、JMS Connector は複数のセッション、コンシューマー、およびプロデューサーを作成します。これらをキャッシュして再利用することで、アプリケーションのパフォーマンスを高めることができます。そのため、IBM MQ Connector では、新しい接続を作成する際に使用するキャッシュ戦略を設定できます。デフォルトの戦略では、コンシューマーとプロデューサーの両方をキャッシュし、できるだけ多くのインスタンスを同時にメモリ内に保持します。

キャッシュ設定は、接続宣言内で直接カスタマイズすることができます。

<ibm-mq:config name="IBM_MQ_Config">
  <ibm-mq:connection>
    <ibm-mq:caching-strategy>
      <ibm-mq:default-caching sessionCacheSize="100" consumersCache="false" producersCache="true"/>
    </ibm-mq:caching-strategy>
  </ibm-mq:connection>
</ibm-mq:config>

接続クライアントの識別

クライアント識別子は、接続およびそのオブジェクトを、クライアントの代わりにプロバイダーによって保持される状態と関連付けるものであり、共有されていない永続的なサブスクリプションを識別するために​必要​です。

<ibm-mq:config name="IBM_MQ_Config">
  <ibm-mq:connection clientId="${env.clientId}"/>
</ibm-mq:config>
定義上、​clientId​ によって識別されるクライアント状態は、同時に 1 つの接続によってのみ「使用中」となることができます。

接続に必要なライブラリのセットアップ

重要:​ コネクタはどの特定の実装にもバインドされていないため、使用する接続の種別には関係なく、常に JMS クライアント実装を含むライブラリを設定する必要があります。

IBM MQ 外部ライブラリ

IBM MQ Connector を使用するには、外部 IBM MQ ライブラリを設定します。IBM MQ クライアントライブラリは、​com.ibm.mq.jms.MQConnectionFactory​ 実装を提供している必要があります。

IBM MQ Allclient ライブラリを使用します。

たとえば、次のように設定します。

<dependency>
    <groupId>com.ibm.mq</groupId>
    <artifactId>com.ibm.mq.allclient</artifactId>
    <version>9.0.5.0</version>
</dependency>