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 サブスクリプションの一部に加えることはできません。