IBM MQ メッセージのコンシューム方法

IBM MQ Connector の Consume 操作では、フローにおける特定の時間に、特定の宛先からのメッセージをコンシュームできます。

メッセージのコンシューム

キューからメッセージをコンシュームするための構文は次のとおりです。

<ibm-mq:consume config-ref="IBM_MQ_config" destination="#[vars.destination]"/>

上の操作では、宛先によって識別されるキューにある最初のメッセージをコンシュームしてから、次の構造の Mule メッセージに変換します。

  • ペイロードとしてのメッセージのコンテンツ。

  • メッセージ属性に含まれるメッセージのメタデータ。

メッセージは、デフォルトでは受信されるとすぐに肯定応答されます。何らかの処理を行った後でメッセージの肯定応答を制御する場合は、​ackMode​ を ​MANUAL​ に設定します。 メッセージの肯定応答については、​「メッセージ肯定応答の処理」​を参照してください。

メッセージの待機

デフォルトの最大待機時間は 10 秒に設定されており、その間にメッセージが受信できなければ ​IBM-MQ:TIMEOUT​ エラーが発生します。 実際の状況に合わせてタイムアウトを適切に設定するには、​maximumWait​ パラメーターと ​maximumWaitUnit​ パラメーターをカスタマイズします。

メッセージを無制限に待つ場合は、​maximumWait​ 値を ​-1​ に設定します。 この場合は TIMEOUT エラーは発生しません。

受信メッセージの絞り込み

IBM MQ Connector は、標準の ​JMS セレクター言語​に基づいた、コンシュームするメッセージの絞り込みを完全にサポートします。

たとえば、他のメッセージよりも先に処理する必要のあるメッセージが登録される優先キューがある場合は、次のように絞り込みを行うことができます。

<ibm-mq:consume config-ref="IBM_MQ_config"
destination="openTickets"
selector="JMSPriority=8"/>

セレクターを設定すると、一致するメッセージのみが受信され、宛先にある他のメッセージはすべて無視されます。

MIME タイプおよび文字コード

IBM MQ Connector は、​MM_MESSAGE_CONTENT_TYPE​ プロパティに基づいて、できる限り正確にメッセージの MIME タイプ (​contentType​) を自動的に判断します。しかしながら、最良の判断が間違っていることもあり、その場合は、メッセージのコンテンツに関する情報を提供する必要があります。

このような場合には、​contentType​ パラメーターを使用して、コンテンツタイプを特定の値に設定します。

同じプロセスが文字コードでも機能します。デフォルトでは、他の情報が提供されていない場合、コレクターは Mule ランタイムのデフォルトエンコードがメッセージのエンコードと一致するものと想定します。これは ​encoding​ パラメーターで設定できます。

この MIME タイプの伝播は、IBM MQ 対象クライアントが ​JMS_COMPLIANT​ として選択されている場合にのみ機能します。

トピックサブスクリプションを使用したメッセージのコンシューム

トピックの宛先からのメッセージのコンシュームは、キューからのコンシュームと非常によく似ていますが、トピックサブスクリプションを使用してコンシューマー間で状態を共有できるという追加の機能があります。

トピックからメッセージをコンシュームするための構文は次の通りです。

<ibm-mq:consume config-ref="IBM_MQ_config" destination="#[vars.destination]">
    <ibm-mq:consumer-type>
        <ibm-mq:topic-consumer/>
    </ibm-mq:consumer-type>
</ibm-mq:consume>

コンシューム操作のパラメーターは同じですが、​topic-consumer​ パラメーターでサブスクリプション設定を定義できます。

トピックサブスクリプションの設定方法についての詳細は、​「トピックサブスクリプションの使用」​を参照してください。

受信メッセージのメタデータ

受信する各メッセージは 2 つの部分から構成されます。

  • ペイロード: メッセージのコンテンツ。

  • 属性: メッセージに関するメタデータ。

このメタデータは、3 つの部分から構成され、すべて JMS メッセージで使用できる情報にマップされます。

  • AckId

  • ヘッダー

  • Properties (プロパティ)

属性の構造については、​「JMS リファレンス」​を参照してください。