AMQP Connector 1.8 - Mule 4

AMQP 用 Anypoint Connector (AMQP Connector) により、アプリケーションは AMQP 0.9.1 準拠のブローカーを使用してメッセージングをパブリッシュおよびコンシュームできます。このコネクタの主な機能は次のとおりです。

  • 非公開の一時キューを使用する要求-返信のコンシュームでの RPC パターン

  • 省略可能なチャネル自己回復を備えた SDK トランザクション管理

  • タイムアウトのある同期メッセージ要求

  • 交換とキューの宣言の管理操作

  • すべての AMQP メッセージプロパティ (カスタムヘッダーを含む)

  • Reply To (返信先) (デフォルトの交換に返信をパブリッシュする)

  • 自動、Mule 駆動型、手動のメッセージ肯定応答

  • 手動のメッセージ拒否

  • 必須および即時のパブリッシュパラメーターと、エラー処理で返される (配信不能) メッセージの処理

  • プリフェッチサイズとプリフェッチ数の「サービス品質」設定

  • noLocal および排他的なコンシューマー

  • TLS/SSL 接続

  • JMS Connector で提供されるようなメッセージビルダー機能

コネクタの設定

AMQP Connector には、メッセージのパブリッシュとコンシュームの両方を目的として微調整された一連のデフォルト値が標準で用意されています。つまり、自分で設定する必要があるのは、使用する接続を選択することだけです。

次の例では、​localhost​ のブローカーへの最低限の接続を設定しています。

<amqp:config name="AMQP_Config">
  <amqp:connection
    host="localhost"
    username="guest"
    password="guest" />
</amqp:config>
example

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

メッセージをコンシュームまたはパブリッシュする際に使用する一連のデフォルトパラメーターを定義できます。この方法では、設定に関連するすべての操作のグローバルのデフォルト動作を定義し、カスタム動作が必要な操作でのみ各パラメーターを上書きすることができます。

たとえば、サイズに関しておよびメッセージ全体に関してプリフェッチサイズウィンドウを定義できます。

<amqp:config name="AMQP_Config">
   <amqp:connection host="localhost" username="guest" password="guest" />
   <amqp:quality-of-service-config prefetchSize="4" prefetchCount="4" />
   <amqp:consumer-config ackMode="IMMEDIATE" />
   <amqp:publisher-config requestBrokerConfirms="true"/>
</amqp:config>
example

前の例では、この設定に関連付けられたすべての ​consume​ 操作またリスナーは ​IMMEDIATE​ 種別の肯定応答モードを使用しますが、すべての ​publish​ または ​publish-consume​ 操作では、送信メッセージでブローカーからの確認が要求されます。

これらすべてのプロパティは必要に応じて操作レベルで上書きできます。たとえば、ブローカーからの確認を必要としないメッセージをパブリッシュする必要がある場合は、次のように指定します。

<amqp:publish config-ref="AMQP_Config" requestBrokerConfirms="false"/>
example

ブローカーへの接続

AMQP 接続は、すべての接続に適用される全般的なパラメーターのセットによって定義されます。

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

認証済み接続を確立するには、​connection​ 要素で ​username​、​password​、​virtualhost​ を設定する必要があります。

<amqp:config name="AMQP_Config">
  <amqp:connection host="localhost" virtualhost="/" username="guest" password="guest" />
</amqp:config>
example

ブローカーへの TLS/SSL 接続の設定

デフォルトの TLS コンテキストでパラメーター ​useTls​ を使用して、ブローカーへのセキュアな接続を作成できます。次の方法で接続の子要素またはグローバル要素としてカスタム TLS コンテキストを提供することもできます。

<tls:context name="globalTlsContext">
  <tls:trust-store path="tls/tlstest-cacerts.jks"
    password="changeit" />
  <tls:key-store path="tls/tlstest-keystore.jks"
    keyPassword="changeit" password="changeit" />
</tls:context>

<amqp:config name="config">
  <amqp:connection host="localhost" port="5671"
    virtualHost="/" username="guest" password="guest" useTls="true"
    tlsContext="globalTlsContext" />
 </amqp:config>
example

Server Name Indication

AMQP Connector v1.1.0 以降では、Server Name Indication (SNI) がサポートされています。ブローカーで SNI がサポートされている場合、ホスト名を検証して、同じ IP アドレスに別の証明書を提供できます。

パラメーター ​useSNI​ を使用して、SSL ハンドシェイク中に AMQP クライアントが ​ClientHello​ メッセージの拡張機能としてホスト名を追加する必要があることを示します。

<tls:context name="globalTlsContext">
  <tls:trust-store path="tls/tlstest-cacerts.jks"
    password="changeit" />
  <tls:key-store path="tls/tlstest-keystore.jks"
    keyPassword="changeit" password="changeit" />
</tls:context>

<amqp:config name="config">
  <amqp:connection host="localhost" port="5671"
    virtualHost="/" username="guest" password="guest" useTls="true" useSni="true"
    tlsContext="globalTlsContext" />
 </amqp:config>
example