JMS Connector を使用したトピックサブスクリプションの設定

JMS のトピックサブスクリプションにより、コンシューマーの接続に関するサブスクリプションの動作と、コンシューマーがやり取りする方法を設定できます。

JMS 用 Anypoint Connector (JMS Connector) の ​Consumer​ および ​On New Message​ 操作では、​[Consumer type (コンシューマー種別)]​ 項目で ​[Topic consumer (トピックコンシューマー)]​ 設定を選択することで、トピックサブスクリプションを管理します。

永続的なサブスクリプションの設定

永続的なサブスクリプションにより、コンシューマーのオフライン中にトピックにパブリッシュされたメッセージを受信できます。 JMS プロバイダーでは、キューに送信されたメッセージを保存する場合と同様にトピックに送信またはパブリッシュされたメッセージを保存します。別のアプリケーションの ​[Topic consumer (トピックコンシューマー)]​ 設定で同じ接続、クライアント ID、トピック、およびサブスクリプション名が使用されている場合、サブスクリプションは再アクティブ化され、サブスクライバーが非アクティブになっていた間にパブリッシュされたメッセージが JMS プロバイダーにより配信されます。

次の例では、​[Topic consumer (トピックコンシューマー)]​ を ​[Durable (永続的)]​ に設定します。

  1. Studio で、フローから ​[Consume]​ 操作を選択します。

  2. [Destination (宛先)]​ 項目を ​#[vars.destination]​ に設定します。

  3. [Consumer type (コンシューマー種別)]​ 項目を ​[Topic consumer (トピックコンシューマー)]​ に設定します。

  4. [Durable (永続的)]​ オプションを選択します。

  5. [Subscription name (サブスクリプション名)]​ を ​SampleSub​ に設定します。

Consume 操作の画面のトピックコンシューマーの設定で [Durable (永続的)] を選択する
Figure 1. JMS Connector のトピックコンシューマーの永続的の設定

XML エディターでは、​<jms:topic-consumer>​ および ​durable​ の設定は次のように記述されます。

<jms:consume config-ref="JMS_config" destination="#[vars.destination]">
    <jms:consumer-type>
        <jms:topic-consumer durable="true" subscriptionName="SampleSub"/>
    </jms:consumer-type>
</jms:consume>

共有サブスクリプションの設定

JMS 仕様 1.1 の接続では、一度に複数のコンシューマーをトピックのサブスクリプションに含めることはできません。つまり、トピックサブスクリプションのメッセージ処理作業を共有できないため、アプリケーションの拡張性が制限されます。 JMS 仕様 2.0 の接続では、この制限がなくなり、同じサブスクリプションで共有コンシューマーを設定できます。

次の例では、​[Topic consumer (トピックコンシューマー)]​ を ​[Shared (共有)]​ に設定します。

  1. Studio で、フローから ​[Consume]​ 操作を選択します。

  2. [Destination (宛先)]​ 項目を ​InvoiceEventsTopic​ に設定します。

  3. [Consumer type (コンシューマー種別)]​ 項目を ​[Topic consumer (トピックコンシューマー)]​ に設定します。

  4. [Shared (共有)]​ オプションを選択します。

  5. [Subscription name (サブスクリプション名)]​ を ​ClusterSubscription​ に設定します。

Consume 操作の画面のトピックコンシューマーの設定で [Shared (共有)] を選択する
Figure 2. JMS Connector のトピックコンシューマーの共有の設定

XML エディターでは、​<jms:topic-consumer>​ および ​shared​ の設定は次のように記述されます。

<jms:listener config-ref="config" destination="InvoiceEventsTopic">
    <jms:consumer-type>
        <jms:topic-consumer shared="true" subscriptionName="ClusterSubscription"/>
    </jms:consumer-type>
</jms:listener>

非ローカルサブスクリプションの設定

同じアプリケーションによってトピックにパブリッシュされたメッセージを、受信しないようにしたいといった場合があります。同じ接続によってトピックにパブリッシュされたメッセージをコンシューマーが受信しないようにするには、​[Topic consumer (トピックコンシューマー)]​ 項目を ​[No local (非ローカル)]​ に設定します。非ローカルとして設定されているコンシューマーを共有サブスクリプションの一部に加えることはできません。

次の例では、​[Topic consumer (トピックコンシューマー)]​ を ​[No local (非ローカル)]​ に設定します。

  1. Studio で、フローから ​[Consume]​ 操作を選択します。

  2. [Destination (宛先)]​ 項目を ​{notificationsChannel}​ に設定します。

  3. [Consumer type (コンシューマー種別)]​ 項目を ​[Topic consumer (トピックコンシューマー)]​ に設定します。

  4. [No local (非ローカル)]​ オプションを選択します。

Consume 操作の画面のトピックコンシューマーの設定で [No local (非ローカル)] を選択する
Figure 3. JMS Connector のトピックコンシューマーの非ローカルの設定

XML エディターでは、​<jms:topic-consumer>​ および ​noLocal​ の設定は次のように記述されます。

<jms:listener config-ref="config" destination="${notificationsChannel}">
    <jms:consumer-type>
        <jms:topic-consumer noLocal="true"/>
    </jms:consumer-type>
</jms:listener>