Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerIBM MQ のトピックを使用すると、コンシューマーの接続に関するサブスクリプションの動作と、コンシューマー間の相互動作を設定できます。
IBM MQ Connector では、consumer
操作と listener
操作の両方で topic-consumer
設定を使用して、トピックサブスクリプションのいろいろな側面を処理できます。
永続的サブスクリプションでは、コンシューマーがオフラインのときにトピックにパブリッシュされたメッセージも受信できます。 永続的サブスクリプションが登録されると、コンシューマーがオンラインになるたびに、接続の確立前にパブリッシュされていたすべてのメッセージを受信します。
<ibm-mq:consume config-ref="JMS_config" destination="#[vars.destination]">
<ibm-mq:consumer-type>
<ibm-mq:topic-consumer durable="true" subscriptionName="SampleSub"/>
</ibm-mq:consumer-type>
</ibm-mq:consume>
IBM MQ は、キューに送信されたメッセージと同じように、トピックに対してパブリッシュされたメッセージを格納します。このアプリケーションまたは別のアプリケーションによって同じ接続およびそのクライアント ID、同じトピック、同じサブスクリプション名を使用して topic-consumer
が作成された場合、そのサブスクリプションは再アクティブ化され、IBM MQ はサブスクライバーが非アクティブだった期間中にパブリッシュされたメッセージを配信します。
JMS 1.1 では、トピックのサブスクリプションで同時に複数のコンシューマーを有効にすることができなかったため、トピックサブスクリプションのメッセージ処理を共有できず、アプリケーションの拡張性を制限する要因となっていました。 JMS 2.0 では、共有サブスクリプションの導入によって、この制限を撤廃しています。
IBM MQ Connector を JMS 2.0 接続で設定すると、任意の topic-consumer
を shared
サブスクリプションの一部として宣言できます。
<ibm-mq:listener config-ref="config" destination="InvoiceEventsTopic">
<ibm-mq:consumer-type>
<ibm-mq:topic-consumer shared="true" subscriptionName="ClusterSubscription"/>
</ibm-mq:consumer-type>
</ibm-mq:listener>
この 2 つの異なる listener
インスタンスに対する設定により、メッセージがインボイス宛先にパブリッシュされると、2 つのリスナーのどちらかにのみ配信され、他方には配信されません。
アプリケーションがトピックにパブリッシュしたメッセージを、同じアプリケーションが受信しないようにしたいケースがあります。この場合は、topic-consumer
で noLocal
パラメーターを使用することにより、コンシューマーが同じ接続経由でトピックにパブリッシュされたメッセージを受信しなくなります。
<ibm-mq:listener config-ref="config" destination="${notificationsChannel}">
<ibm-mq:consumer-type>
<ibm-mq:topic-consumer noLocal="true"/>
</ibm-mq:consumer-type>
</ibm-mq:listener>
noLocal
として設定されているコンシューマーを shared
サブスクリプションの一部に加えることはできません。