Microsoft Service Bus コネクタ - Mule 4

サポートカテゴリ: 選択

Microsoft Service Bus コネクタ v2.1

Microsoft Service Bus 用 Anypoint コネクタ (Microsoft Service Bus コネクタ) を使用すると、オンプレミスの Windows Service Bus とのメッセージインテグレーションが可能になります。このコネクタは、Advanced Message Queuing Protocol (AMQP) 1.0 を使用して、キューおよびトピックとの通信をサポートします。さらに、組み込みの管理 API を使用した Service Bus オブジェクトの動的な検出とプロビジョニングが可能です。 Microsoft Azure でメッセージインテグレーションのシナリオを実装するには、このコネクタの代わりに、Mule 3 ユーザが使用できる Microsoft Azure Service Bus コネクタを使用します。

前提条件

この情報を使用するには、Microsoft Service Bus、Mule Runtime Engine (Mule)、Anypoint コネクタ、Anypoint Studio、Mule の概念、Mule フローの要素、グローバル要素に精通している必要があります。

対象リソースへの接続をテストするには、次のいずれかのログイン情報の種類が必要です。

  • SAS (共有アクセス署名)

  • ユーザ名とパスワード

  • Windows ログイン情報の種類

ソフトウェアの要件および互換性情報については、Microsoft Service Bus Connector Release Notes - Mule 4​を参照してください。

Apache Maven でこのコネクタを使用するには、​Anypoint Exchange​ の [Dependency Snippets (連動関係スニペット)]​ リンクをクリックしてください。

このコネクタでは、オンプレミスの Microsoft Windows Service Bus がサポートされています。

POM ファイル情報

<dependency>
  <groupId>com.mulesoft.connectors</groupId>
  <artifactId>mule-microsoft-service-bus-connector</artifactId>
  <version>RELEASE</version>
  <classifier>mule-plugin</classifier>
</dependency>

Mule は、RELEASE を現在のバージョンに変換します。バージョンを指定するには、Anypoint Exchange で Microsoft Service Bus コネクタ​を表示し、[Dependency Snippets (連動関係スニペット)]​ をクリックします。

Flow Designer での接続

  1. Flow Designer で、次のいずれかのトリガをクリックします。

    • Microsoft Windows Service Bus Connector: キュー、トピック、またはカスタムオブジェクトの変更をリスンします。

    • HTTP Listener: ブラウザからの入力、または curl や Postman などのコマンドをリスンします。

    • Scheduler: 指定された期間にアプリケーションを有効化します。

      トリガオプション
  2. プラス記号を選択して、コンポーネントを追加します。

    コネクタの追加
  3. コンポーネントとしてコネクタを選択します。

  4. コネクタのグローバル要素の 1 つを設定します。

    • 設定

      設定
      一般

      項目

      説明

      Connection Type (接続種別)

      接続の種別 (Shared Access Signature​、Username and Password​、または Windows​)。

      Encoding (エンコード)

      メッセージにエンコードが指定されていない場合に使用されるメッセージ本文のデフォルトのエンコード。

      Content-Type (コンテンツタイプ)

      メッセージにコンテンツタイプが指定されていない場合に使用されるメッセージ本文のデフォルトの contentType。

      Ack Mode (肯定応答モード)

      メッセージをコンシュームするときに使用するセッション肯定応答モード。

      Consumer Type (コンシューマ種別)

      メッセージをコンシュームするときにデフォルトで使用。メッセージソースレベルで上書きできます。

      Selector (セレクタ)

      受信メッセージの絞り込みに使用されるデフォルトの JMS セレクタ。

      Persistent Delivery (永続的な配信)

      true の場合、メッセージは PERSISTENT JMSDeliveryMode を使用して送信されます。

      Priority (優先度)

      メッセージを送信するときに使用されるデフォルトの JMSPriority 値。

      Time To Live (存続期間)

      メッセージが期限切れになって破棄されるまでブローカーに残るデフォルトの時間。

      Time To Live Unit (存続期間単位)

      [Time To Live (存続期間)] 設定で使用される時間単位。

      Disable Message Id (メッセージ ID の無効化)

      true の場合、MessageID を生成しないようにメッセージにフラグが付けられます。

      Disable Message Timestamp (メッセージタイムスタンプの無効化)

      true の場合、送信タイムスタンプを生成しないようにメッセージにフラグが付けられます。

      Delivery Delay (配信遅延)

      メッセージの配信を遅らせるための配信遅延時間。

      Delivery Delay Unit (配信遅延単位)

      [Delivery Delay (配信遅延)] 設定で使用される時間単位。

      Jms Type (JMS 種別)

      メッセージが送信されるときに JMS 種別ヘッダーで設定されるメッセージ種別の識別子。

      Queue Prefetch (キュープリフェッチ)

      リモートピアがクライアントに送信し、各コンシューマインスタンスのプリフェッチバッファで保持できるメッセージの数。

      SAS (共有アクセス署名) 接続:

      一般
      Blob Storage Connection (Blob ストレージ接続)

      Connection (接続)

      一般

      項目

      説明

      接続種別

      Shared Access Signature (共有アクセス署名)

      Blob Storage Connection (Blob ストレージ接続)

      項目

      説明

      Storage Access Key (ストレージアクセスキー)

      ストレージからのアクセスキー

      Container Name (コンテナ名)

      コンテナの名前

      Storage Account Name (ストレージアカウント名)

      ストレージからのアカウント名

      Connection (接続)

      項目

      説明

      Service Namespace (サービス名前空間)

      サブスクリション内の Azure Service Bus Service の名前空間。

      Shared Access Signature (共有アクセス署名)

      すべてのサービスリソースにアクセスするためにセキュリティプロファイルを 1 つだけセットアップする場合の一意のセキュリティトークン。この場合、トークンの有効期限が切れるとコネクタは自動的に再接続できなくなるので、フローの実行を停止し、この設定を新しいトークンで更新する必要があります。

    • ユーザ名とパスワード接続

      一般
      Blob Storage Connection (Blob ストレージ接続)

      Connection (接続)

      一般

      項目

      説明

      接続種別

      ユーザ名パスワード

      Blob Storage Connection (Blob ストレージ接続)

      項目

      説明

      Storage Access Key (ストレージアクセスキー)

      ストレージからのアクセスキー

      Container Name (コンテナ名)

      コンテナの名前

      Storage Account Name (ストレージアカウント名)

      ストレージからのアカウント名

      Connection (接続)

      項目

      説明

      Shared Access Key Name (共有アクセスキー名)

      名前空間に設定したアクセスキーの名前を入力します。下位レベルに作成されたアクセスキー (つまり、トピックレベルの共有キー) は、スタートアップ時の接続性テストを無効にしない限り、このオプションには使用できません。

      Shared Access Key (共有アクセスキー)

      256 ビットの主キーを入力します。

      Service Namespace (サービス名前空間)

      アプリケーション内の Service Bus リソースに対応するサービス名前空間の名前を入力します。

    • Windows 接続

      一般
      Connection (接続)
      一般

      項目

      説明

      接続種別

      Windows

      Connection (接続)

      項目

      説明

      Service Namespace (サービス名前空間)

      アプリケーション内の Service Bus リソースに対応するサービス名前空間の名前を入力します。

      Username (ユーザ名)

      認証に使用するユーザを入力します。

      Password (パスワード)

      ユーザのパスワードを入力します。

      Fully Qualified Domain Name (完全修飾ドメイン名)

      Windows Service Bus サーバの完全修飾ドメイン名を入力します。

      Port (ポート)

      サーバポート番号を入力します。

      Disable SSL Certificate Validation (SSL 証明書検証の無効化)

      自己署名 SSL 証明書を使用する場合は、このチェックボックスをオンにします。

      Skip connectivity test (接続性テストをスキップ)

      Windows Service Bus リソースへのアクセスが制限されていて、スタートアップ時に実行される接続性テストをスキップしたい場合は、これを true に設定する必要があります。

ソース

Queue Receive (キュー受信)

  1. トリガをクリックし、[ServiceBus] > [Queue Receive (キュー受信)] を選択します。

    Queue Source (キューソース)
  2. 「操作」セクションで説明したとおりに、このコネクタのグローバル設定を入力します。

  3. ソースのパラメータを入力します。

    項目 説明

    Source Queue (ソースキュー)

    イベントを受信するキュー。

    Disable Auto Acknowledge (自動肯定応答の無効化)

    Acknowledge Message 操作を使用してイベントを手動で肯定応答する場合はこれをオンにします。

    Ack Mode (肯定応答モード)

    メッセージをコンシュームするときに使用するセッション肯定応答モード。

    Selector (セレクタ)

    受信メッセージの絞り込みに使用されるデフォルトの JMS セレクタ。

    Number Of Consumers (コンシューマの数)

    JMS メッセージを受信するために使用する同時コンシューマ数。

    Body (本文)

    メッセージの本文。

    JMS Type (JMS 種別)

    メッセージの JMSType 識別子ヘッダー。

    Correlation ID (相関 ID)

    メッセージの JMSCorrelationID ヘッダー。

    Send Content Type (コンテンツタイプの送信)

    本文のコンテンツタイプをプロパティとして送信するかどうか。

    Content-Type (コンテンツタイプ)

    メッセージ本文のコンテンツタイプ。

    Send Encoding (エンコードの送信)

    本文の outboundEncoding をメッセージのプロパティとして送信するかどうか。

    Encoding (エンコード)

    メッセージ本文のエンコード。

    Reply To - Destination (返信の宛先)

    このメッセージへの応答を送信する宛先。

    Reply To - Destination Type (返信の宛先種別)

    この宛先の種別。

    User Properties (ユーザプロパティ)

    メッセージに送信されるカスタムユーザプロパティ。

    JMSX Properties (JMSX プロパティ)

    JMS は、JMS 定義プロパティ用に JMSX​ プロパティ名プレフィックスを予約します。ここで、JMS の「よく知られた」プロパティセットを定義します。

    Persistent Delivery (永続的な配信)

    true の場合、メッセージは PERSISTENT JMSDeliveryMode を使用して送信されます。

    Priority (優先度)

    メッセージを送信するときに使用されるデフォルトの JMSPriority 値。

    Time To Live (存続期間)

    メッセージが期限切れになって破棄されるまでブローカーに残るデフォルトの時間を定義します。

    Time To Live Unit (存続期間単位)

    [Time To Live (存続期間)] 設定で使用される時間単位。

    Disable Message Id (メッセージ ID の無効化)

    true の場合、MessageID を生成しないようにメッセージにフラグが付けられます。

    Disable Message Timestamp (メッセージタイムスタンプの無効化)

    true の場合、送信タイムスタンプを生成しないようにメッセージにフラグが付けられます。

    Delivery Delay (配信遅延)

    メッセージの配信を遅らせるための配信遅延時間。

    Delivery Delay Unit (配信遅延単位)

    [Delivery Delay (配信遅延)] 設定で使用される時間単位。

Topic Receive (トピック受信)

  1. トリガをクリックし、[ServiceBus] > [Topic Receive (トピック受信)] を選択します。

    Queue Source (キューソース)
  2. 「操作」セクションで説明したとおりに、このコネクタのグローバル設定を入力します。

  3. ソースのパラメータを入力します。

    項目 説明

    Disable Auto Acknowledge (自動肯定応答の無効化)

    Acknowledge Message 操作を使用してイベントを手動で肯定応答する場合はこれをオンにします。

    Ack Mode (肯定応答モード)

    メッセージをコンシュームするときに使用するセッション肯定応答モード。

    Selector (セレクタ)

    受信メッセージの絞り込みに使用されるデフォルトの JMS セレクタ。

    Body (本文)

    メッセージの本文。

    JMS Type (JMS 種別)

    メッセージの JMSType 識別子ヘッダー。

    Correlation ID (相関 ID)

    メッセージの JMSCorrelationID ヘッダー。

    Send Content Type (コンテンツタイプの送信)

    本文のコンテンツタイプをプロパティとして送信するかどうか。

    Content-Type (コンテンツタイプ)

    メッセージ本文のコンテンツタイプ。

    Send Encoding (エンコードの送信)

    本文の outboundEncoding をメッセージのプロパティとして送信するかどうか。

    Encoding (エンコード)

    メッセージ本文のエンコード。

    Reply To - Destination (返信の宛先)

    このメッセージへの応答を送信する宛先。

    Reply To - Destination Type (返信の宛先種別)

    この宛先の種別。

    User Properties (ユーザプロパティ)

    メッセージに送信されるカスタムユーザプロパティ。

    JMSX Properties (JMSX プロパティ)

    JMS は、JMS 定義プロパティ用に「JMSX」プロパティ名プレフィックスを予約します。ここで、JMS の「よく知られた」プロパティセットを定義します。

    Persistent Delivery (永続的な配信)

    true の場合、メッセージは PERSISTENT JMSDeliveryMode を使用して送信されます。

    Priority (優先度)

    メッセージを送信するときに使用されるデフォルトの JMSPriority 値。

    Time To Live (存続期間)

    メッセージが期限切れになって破棄されるまでブローカーに残るデフォルトの時間を定義します。

    Time To Live Unit (存続期間単位)

    [Time To Live (存続期間)] 設定で使用される時間単位。

    Disable Message Id (メッセージ ID の無効化)

    true の場合、MessageID を生成しないようにメッセージにフラグが付けられます。

    Disable Message Timestamp (メッセージタイムスタンプの無効化)

    true の場合、送信タイムスタンプを生成しないようにメッセージにフラグが付けられます。

    Delivery Delay (配信遅延)

    メッセージの配信を延期するために適用される配信遅延を設定します。

    Delivery Delay Unit (配信遅延単位)

    [Delivery Delay (配信遅延)] 設定で使用される時間単位。

    Topic Path (トピックパス)

    特定のサブスクリプションをリスンする一般トピック。

    Subscription Path (サブスクリプションパス)

    イベントを受信するサブスクリプション。

Studio プロジェクトへのコネクタの追加

Anypoint Studio には、Studio プロジェクトにコネクタを追加する 2 つの方法があります。Studio タスクバーの Exchange ボタンから追加するか、[Mule Palette (Mule パレット)] ビューから追加します。

Exchange を使用してコネクタを追加する

  1. Studio で Mule プロジェクトを作成します。

  2. Studio タスクバーの左上にある Exchange アイコン (X)​ をクリックします。

  3. Exchange で、[Login (ログイン)]​ をクリックし、Anypoint Platform のユーザ名とパスワードを指定します。

  4. Exchange で、「service bus」を検索します。

  5. コネクタを選択して [Add to project (プロジェクトに追加)]​ をクリックします。

  6. 画面の指示に従ってコネクタをインストールします。

Studio でコネクタに追加する

  1. Studio で Mule プロジェクトを作成します。

  2. [Mule Palette (Mule パレット)] ビューで、[(X) Search in Exchange ((X) Exchange 内を検索)]​ をクリックします。

  3. [Add Modules to Project (モジュールをプロジェクトに追加)]​ で、検索項目に「service bus」と入力します。

  4. [Available modules (使用可能なモジュール)]​ で、このコネクタの名前をクリックします。

  5. [Add (追加)]​ をクリックします。

  6. [Finish (完了)]​ をクリックします。

Studio で設定する

  1. コネクタの操作を Studio キャンバスにドラッグします。

  2. コネクタのグローバル要素を設定します。

    各接続種別の設定値は、「Design Center での接続方法」セクションと同じです。

General (一般)

ユースケース: キューリストの取得

General (一般)
  1. Studio で新しい Mule アプリケーションを作成し、新規フローのソースとして [HTTP Listener (HTTP リスナ)] を選択します。

  2. 新しい HTTP リスナ設定のグローバル要素を追加します。

  3. 次の値を使用して、[Host (ホスト)] および [Port (ポート)] パラメータを指定します。

    パラメータ

    Host (ホスト)

    0.0.0.0

    Port (ポート)

    8081

  4. [Save (保存)] ボタンをクリックします。

  5. 新しいグローバル設定を HTTP リスナに割り当てます。

  6. HTTP リスナのパスに /servicebus​ という値を設定します。

  7. 新しい Service Bus コンポーネントの操作をフローにドラッグします。

  8. Service Bus コネクタのグローバル要素に環境値を設定します。

  9. コネクタの前に [Transform Message (メッセージの変換)] を追加し、次のような出力を追加します。

%dw 2.0
output application/json
---
payload

+ * プロジェクトを保存し、Mule アプリケーションとして実行します。

+ アプリケーションをテストするには、http://127.0.0.1:8081/servicebus​ に移動します。

XML フロー:

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:servicebus="http://www.mulesoft.org/schema/mule/servicebus"
	xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
	http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/servicebus
http://www.mulesoft.org/schema/mule/servicebus/current/mule-servicebus.xsd
http://www.mulesoft.org/schema/mule/ee/core
http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
	<configuration-properties file="mule-app.properties" />
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<servicebus:config name="Servicebus_Config" doc:name="Servicebus Config" >
		<servicebus:windows-connection
		namespace="${config.namespace}"
		username="${config.username}"
		password="${config.password}"
		fqdn="${config.fqdn}" />
	</servicebus:config>
	<flow name="servicebusFlow">
		<http:listener doc:name="Listener" config-ref="HTTP_Listener_config"
		path="/servicebus"/>
		<servicebus:queues-list doc:name="Queues list" config-ref="Servicebus_Config"/>
		<ee:transform doc:name="Object to JSON">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
			</ee:message>
		</ee:transform>
	</flow>
</mule>

Service Bus の認証

Service Bus コネクタを使用してメッセージを送受信する場合、認証は AMQP を使用して実行されます。

REST 管理 API の場合、認証スキームは Microsoft Service Bus バージョンによって異なります。オンプレミスで実行する Windows Service Bus では OAuth、クラウドで実行する Azure Service Bus では共有アクセスキートークンがそれぞれ使用されます。

Windows Service Bus では、自己署名 SSL 証明書を使用して、AMQP および HTTPS 経由の通信のセキュリティが確保されます。この証明書が、Mule を実行するボックスのローカルにインポートされていない場合は、[Ignore SSL warning check (SSL 警告チェックを無視)] が有効になっていない限り、コネクタは実行されません。

SSL チェックを有効にするには、次の手順に従って証明書をインポートする必要があります。

  1. PowerShell cmdlet Get-SBAutoGeneratedCA を使用して、Windows Service Bus を実行するボックスのローカルに証明書をダウンロードします。このチュートリアルでは、証明書ファイルが %temp%\AutoGeneratedCA.cer​ にエクスポートされると想定します。

  2. %programfiles%\Java\jre7​ に移動します。. ​bin\keytool.exe​ ツールと lib\security\cacerts​ があることを確認します。Keytool.exe で証明書のインポートを行うには、システム管理者として実行している必要があります。それ以外の場合は、「Access Denied (アクセス拒否)」エラーが発生します。

  3. 次のコマンドを入力します。bin\keytool.exe –list –keystore lib\security\cacerts

  4. 次のコマンドを実行して、自動生成される Service Bus 証明書をインポートします。bin\keytool.exe –importcert –alias AppServerGeneratedSBCA –file %temp%\AutoGeneratedCA.cer –keystore lib\security\cacerts –v

  5. 要求されたらパスワードを入力します (デフォルトは「changeit」です)。 パスワードがわからない場合はインポートを実行できません。 証明書を信用するかどうかを尋ねられたら、「Y」 (はい) と入力します。

SAS ベースの認証

このコネクタは、ユーザ名とパスワードが必要な接続スキームの他に、SAS ベースで認証される接続を提供します (Azure のみ)。この種別の接続では、ユーザ名とパスワードを必要としない Service Bus サービスの認証トークンを設定できます。

SAS トークンスキーマは URI ベースなので (つまり、URI に基づいてリソースに異なる承認アクセスを割り当てることができる)、この接続では必要な認証トークンを提供する複数の方法がサポートされています。最も単純なケースは、サービスが公開するベースエンドポイントであるルート URI を使用して、すべてのリソースへのアクセスを認証する 1 つのプロファイルがある場合です。さまざまなリソースに異なるアクセストークンを提供するには、コネクタが実行中にアクセスする必要があるリソースに従って、トークンのリストを設定可能な設定を使用します。

上記のメカニズムの拡張機能として、コネクタが必要なときにセキュリティトークンを要求できるカスタムトークンプロバイダを実装することもできます。アプリケーションが各要求を解決し、コネクタから要求されるたびに新しいトークンを返す必要があります。トークンには有効期限があるので、このメカニズムではトークンが期限切れになったらコネクタは対象リソースで再認証することができます。これは、設定時にトークンが指定されている場合は許可されていません。

Shared Access Signature​ 接続で使用可能な設定は次のとおりです。

  • Service Namespace (サービス名前空間)

    サブスクリション内の Azure Service Bus サービスの名前空間。

  • Shared Access Signature (共有アクセス署名)​ (省略可能)

    すべてのサービスリソースにアクセスするためにセキュリティプロファイルを 1 つセットアップする場合の一意のセキュリティトークン。

    このシナリオでは、トークンの有効期限が切れると、コネクタは自動的に再接続できません。そのため、フローの実行を停止し、この設定を新しいトークンで更新する必要があります。

[Advanced (詳細)]​ タブ:

  • SAS tokens list (SAS トークンリスト)​ (省略可能)

    セキュリティプロファイルが URI ごとに異なる場合に、コネクタが異なる URI にアクセスするために必要なセキュリティトークンのリスト。

    このシナリオでは、トークンの有効期限が切れると、コネクタはそのトークンにリンクされた URI に再接続できません。そのため、フローの実行を停止し、この設定を新しいトークンセットで更新する必要があります。

  • SAS tokens provider (SAS トークンプロバイダ)​ (省略可能)

    org.mule.modules.microsoftservicebus.connection.providers.SharedAccessSignatureProvider​ インターフェースを実装する Spring bean の参照。

    次の例は、SAS トークンプロバイダの設定方法を示しています。

    <servicebus:config name="Microsoft_Service_Bus_Config"
       doc:name="Microsoft Service Bus Config" >
    <servicebus:shared-access-signature-connection
      blobAccountKey="muletest"
      blobContainerName="OTJZOwIql+mof78yt789TuAPJRhahuO0quQEFtBUn3yt0UTzjuF6dKH1MH5iGAalYwATUqXYjvH+7r/PLMLxEQ=="
      blobAccountName="test-container" namespace="mulesbft">
    <servicebus:tokens >
    <servicebus:token value="SharedAccessSignature sr=https%3a%2f%2fmynamespace.servicebus.windows.net%2f%24Resources%2fTopics&amp;sig=Pks8c5VB10KWRhQNshM%2fCR%2fwju%2bryi7WyE%2b9sm2KP12%3d&amp;se=1575485246&amp;skn=RootManageSharedAccessKey" />
    <servicebus:token value="SharedAccessSignature sr=https%3a%2f%2fmynamespace.servicebus.windows.net%2ftopictoken&amp;sig=L1JSM9cn6x9QnhzTB0P1wtjyvOkeLQ0o1SB59%2boWEc7%3d&amp;
    se=1576702491&amp;skn=RootManageSharedAccessKey" />
    </servicebus:tokens>
    </servicebus:shared-access-signature-connection>
    </servicebus:config>

    トークンプロバイダを指定する場合、コネクタがアクセスする必要がある各 URI に、セキュリティプロファイルに従って新しいトークンを提供する必要があります。このシナリオでは、トークンの有効期限が切れるたびにコネクタが新しいトークンを要求し、実装でそのトークンを提供する必要があります。これにより、対象 URI への再接続がシームレスに行われます。

  • Max connections (最大接続数)​ (省略可能)

    プロデューサが再利用できるようにプール内で保持する接続の最大数。

    この値を -1​ に設定すると、毎回新しい接続が作成されます。

少なくとも 1 つの省略可能な設定を string​ のトークン形式で指定し、次のパターンに従う必要があります。

SharedAccessSignature sr=[resource_uri]&sig=[signature]&se=[ttl]&skn=[profile]

sr​ パラメータ値は、対象リソースで実行する操作に応じて、https​ または amqps​ で始めることができます:

SharedAccessSignature sr=amqps%3a%2f%2fmynamespace.servicebus.windows.net%2fMyQueue&sig=pSrfJn5uRTiepgOTjBpjcf2gw%2bG34S1MYdCfkQkTC8A%3d&se=101&skn=OperationalPolicyKey

パフォーマンスに関する考慮事項

SAS トークンを使用して Azure Service Bus を認証する必要があるクレームベースセキュリティのメカニズムには、特殊なノードを使用したメッセージの交換が伴います。これはコネクタのパフォーマンスに影響を及ぼします。アクセスされるリソースに関連する対象トークンを使用した接続セキュリティをセットアップするため、要求ごとにトークンが交換されるためです。パフォーマンスへの影響をできるだけ小さくするために、バージョン 1.2 以降ではこれが最適化されています。いずれにしても、高スループットで複数のメッセージを送信する必要がある場合、ユーザ名とパスワードの設定が必要な接続戦略をお勧めします。これは、スループットを向上させると同時にコネクタで Azure Service Bus を認証する最も単純な方法ですが、使用する shared access key name​ にパスワードを記述する必要があります。

前述したように、SAS 戦略を使用するときにパフォーマンス上の問題がある場合は、バージョン 1.2 以降に更新することをお勧めします。最適化されたメカニズムでは、AMQP コンテナとキャッシュが (それぞれ) 接続を維持し、接続のセットアップ時またはトークンが期限切れになった場合にのみトークンの交換が行われるため、送受信操作のパフォーマンスへの影響は小さくなっています。

制限付きアクセスポリシーの使用

リソースへのアクセスが制限されていて、リソースレベルのみの権限があるセキュリティポリシーを使用すると、connectivity test​ に提供されたカスタムポリシーによって禁止されている可能性がある名前空間のルートレベルが対象にされるので、コネクタはスタートアップ時に shared access key​ を実行できません。. このようなシナリオでは、この目的のために使用できる設定オプションで接続性テストをスキップする必要があります。スキップしない場合は、コネクタのスタートアップが失敗します。

要求と応答の記録

コネクタを使用するときに要求と応答を記録するには、Mule アプリケーションの log4j2.xml​ 設定ファイルの Loggers​ 要素に次の行を追加して、ロガーを設定します。

<AsyncLogger name="org.springframework.web.client"
   level="DEBUG"/>

次の例は、AsyncLogger​ 行が追加された Loggers​ 要素を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
	<Appenders>
	    <Console name="Console" target="SYSTEM_OUT">
	    	<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
		</Console>
	</Appenders>
	<Loggers>
		<AsyncLogger name="org.springframework.web.client" level="DEBUG" additivity="false">
			<appender-ref ref="Console" level="debug"/>
		</AsyncLogger>
	</Loggers>
</Configuration>

アプリケーションログは次の方法で表示できます。

  • アプリケーションを Anypoint Platform から実行している場合、出力は Anypoint Studio のコンソールウィンドウに表示される。

  • コマンドラインから Mule を使用してアプリケーションを実行している場合、アプリケーションログは OS コンソールに表示される。

アプリケーションのログファイル (log4j2.xml​) でログファイルパスがカスタマイズされていない場合、次のデフォルトの場所でアプリケーションログを表示することもできます。

MULE_HOME/logs/<app-name>.log

アプリケーションログについての詳細は、「ログの設定」​を参照してください。

ユースケース: Azure Service Bus AMQP

Azure Service Bus AMQP デモの Studio 7 フロー

このフローの XML:

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:servicebus="http://www.mulesoft.org/schema/mule/servicebus"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/servicebus
http://www.mulesoft.org/schema/mule/servicebus/current/mule-servicebus.xsd
http://www.mulesoft.org/schema/mule/ee/core
http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
	<configuration-properties file="mule-app.properties" doc:name="Configuration properties"/>
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config">
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<servicebus:config name="Microsoft_Service_Bus_Config" doc:name="Microsoft Service Bus Config">
		<servicebus:username-password-connection
			userName="${azure.keyname}"
			password="${azure.key}"
			namespace="${azure.namespace}" >
			<servicebus:caching-strategy >
				<servicebus:no-caching-configuration />
			</servicebus:caching-strategy>
		</servicebus:username-password-connection>
	</servicebus:config>
	<flow name="load-http-form-flow">
		<http:listener doc:name="Root Endpoint" config-ref="HTTP_Listener_config"
			path="/" />
		<parse-template doc:name="Web Form" location="form.html" />
	</flow>
	<flow name="queue-endpoint-flow">
		<http:listener doc:name="Queue Endpoint" config-ref="HTTP_Listener_config"
			path="/pushMessageQueue" />
		<ee:transform doc:name="Convert Payload to Java Object">
			<ee:message>
				<ee:set-payload><![CDATA[%dw 2.0
output application/java
---
payload]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<servicebus:queue-send doc:name="Queue send" config-ref="Microsoft_Service_Bus_Config"
			destinationQueue="#[payload.queue]">
			<servicebus:message >
				<servicebus:body ><![CDATA[#[payload.message]]]></servicebus:body>
			</servicebus:message>
		</servicebus:queue-send>
	</flow>
	<flow name="topic-endpoint-flow">
		<http:listener doc:name="Topic Endpoint" config-ref="HTTP_Listener_config"
			path="/pushMessageTopic"/>
		<ee:transform doc:name="Convert Payload to Java Object">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
payload]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<servicebus:topic-send doc:name="Topic send" config-ref="Microsoft_Service_Bus_Config"
			destinationTopic="#[payload.topic]"
			transactionalAction="NOT_SUPPORTED"
			sendCorrelationId="AUTO">
			<servicebus:message >
				<servicebus:body ><![CDATA[#[payload.message]]]></servicebus:body>
			</servicebus:message>
		</servicebus:topic-send>
	</flow>
	<flow name="queue-receive-flow">
		<servicebus:listener
			sourceType="Queue"
			destination="${queue.name}"
			doc:name="Queue receive"
			config-ref="Microsoft_Service_Bus_Config"
			ackMode="AUTO" subscription="NONE"
			numberOfConsumers="1"/>
		<logger level="INFO" doc:name="Log the message" message="#[payload]"/>
	</flow>
	<flow name="topic-receive-flow">
		<servicebus:listener sourceType="Topic" doc:name="Topic receive"
			config-ref="Microsoft_Service_Bus_Config"
			ackMode="AUTO" destination="${topic.name}"
			subscription="${subscription.name}"/>
		<logger level="INFO" doc:name="Log the message" message="#[payload]"/>
	</flow>
</mule>

ユースケース: Azure Service Bus 管理

Azure 管理の Studio 7 フロー

XML フロー:

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:servicebus="http://www.mulesoft.org/schema/mule/servicebus"
	xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
	http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/servicebus
http://www.mulesoft.org/schema/mule/servicebus/current/mule-servicebus.xsd
http://www.mulesoft.org/schema/mule/ee/core
http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
	<configuration-properties file="mule-app.properties"
	doc:name="Configuration properties"/>
	<http:listener-config name="HTTP_Listener_config"
	doc:name="HTTP Listener config">
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<servicebus:config name="Microsoft_Service_Bus_Config"
	doc:name="Microsoft Service Bus Config">
		<servicebus:username-password-connection
		userName="${azure.keyname}"
		password="${azure.key}"
		namespace="${azure.namespace}" >
			<servicebus:caching-strategy >
				<servicebus:no-caching-configuration />
			</servicebus:caching-strategy>
		</servicebus:username-password-connection>
	</servicebus:config>
	<flow name="azure-service-bus-management-demoFlow">
		<http:listener doc:name="Topic Create Endpoint"
		config-ref="HTTP_Listener_config"
		path="/topic"/>
		<ee:transform doc:name="Set ServiceBusTopicDescription">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
	defaultMessageTimeToLive: "P10675199DT2H48M5.4775807S",
	duplicateDetectionHistoryTimeWindow: "PT10M",
	enableBatchedOperations: false,
	maxSizeInMegabytes: 1024,
	requiresDuplicateDetection: false,
	sizeInBytes: null
} as Object {
	class : "com.mulesoft.connectors.microsoft.servicebus.extension.api.entity.ServiceBusTopicDescription"
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<servicebus:topic-create doc:name="Topic create"
		config-ref="Microsoft_Service_Bus_Config"
		topicPath="${topic.name}">
		</servicebus:topic-create>
		<ee:transform doc:name="Object to Json">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
	author: payload.author,
	id: payload.id,
	title: payload.title
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<logger level="INFO" doc:name="Logger" message="#[payload]"/>
	</flow>
	<flow name="azure-service-bus-management-demoFlow1">
		<http:listener doc:name="Subscription Create Endpoint"
		config-ref="HTTP_Listener_config"
		path="/subscription"/>
		<ee:transform doc:name="Set ServiceBusSubscriptionDescription">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
	lockDuration: "PT4M",
	requiresSession: false,
	deadLetteringOnMessageExpiration: false,
	deadLetteringOnFilterEvaluationExceptions: null,
	enableBatchedOperations: false,
	defaultMessageTimeToLive: "P10675199DT2H48M5.4775807S",
	maxDeliveryCount: null
} as Object {
	class : "com.mulesoft.connectors.microsoft.servicebus.extension.api.entity.ServiceBusSubscriptionDescription"
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<servicebus:subscription-create
		topicPath="${topic.name}"
		doc:name="Subscription create"
		config-ref="Microsoft_Service_Bus_Config"
		subscriptionPath="${subscription.name}"/>
		<ee:transform doc:name="Object to Json">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
	linik: payload.link,
	id: payload.id,
	title: payload.title
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<logger level="INFO" doc:name="Logger" message="#[payload]"/>
	</flow>
	<flow name="azure-service-bus-management-demoFlow2">
		<http:listener doc:name="Rule Create Endpoint"
		config-ref="HTTP_Listener_config"
		path="/rule"/>
		<ee:transform doc:name="Set ServiceBusRuleDescription">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
	action: {
		sqlExpression: "set MyProperty2 = 'ABC'",
		"type": "SqlRuleAction"
	},
	filter: {
		correlationId: null,
		sqlExpression: "property1 = 'ok'",
		"type": "SqlFilter"
	}
} as Object {
	class : "com.mulesoft.connectors.microsoft.servicebus.extension.api.entity.ServiceBusRuleDescription"
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<servicebus:rule-create topicPath="${topic.name}" doc:name="Rule create"
		config-ref="Microsoft_Service_Bus_Config" rulePath="${rule.name}"
		subscriptionPath="${subscription.name}"/>
		<ee:transform doc:name="Object to Json">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
	link: payload.link,
	id: payload.id,
	title: payload.title
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<logger level="INFO" doc:name="Logger" message="#[payload]"/>
	</flow>
</mule>

Was this article helpful?

💙 Thanks for your feedback!