AMQP コネクタについて

リリースノート: AMQP Connector Release Notes - Mule 4

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

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

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

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

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

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

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

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

  • 手動のメッセージ拒否

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

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

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

  • TLS/SSL 接続

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

コネクタの設定

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

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

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

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

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

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

<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>

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

このすべてのプロパティは必要に応じて操作レベルで上書きできます。ブローカーからの確認を必要としないメッセージに publish を実行する必要があるとします。

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

ブローカーへの接続

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

認証用のログイン情報の指定

認証済み接続を確立するためには、connection 要素で usernamepasswordvirtualhost を設定する必要があります。

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

ブローカーへの 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>

SNI

AMQP コネクタバージョン 1.1.0 以降、Server Name Indication (SNI) がサポートされています。

パラメータ useSNI を使用して、SSL ハンドシェイク中に AMQP クライアントが ClientHello メッセージの拡張機能としてホスト名を追加する必要があることを示します。ブローカーで SNI がサポートされている場合、ホスト名を検証して、同じ IP アドレスに別の証明書を提供できます。

<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>

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub