Microsoft Service Bus コネクタ

Select

ServiceBus コネクタは、オンプレミスの Windows Service Bus とクラウドの Azure Service Bus を使用したメッセージインテグレーションを可能にします。このコネクタは、AMQP 1.0 を使用して、キューおよびトピックとの通信をサポートします。さらに、組み込みの管理 API を使用した Service Bus オブジェクトの動的な検出とプロビジョニングが可能です。

前提条件

このドキュメントは、読者が Mule、Anypoint コネクタ、Anypoint Studio、Mule の概念、Mule フローの要素、グローバル要素に精通していることを前提としています。

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

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

  • ユーザ名とパスワード

  • Windows ログイン情報の種類

ハードウェアとソフトウェアの要件および互換性に関する情報は、「コネクタリリースノート」を参照してください。

Maven でこのコネクタを使用するには、Anypoint Exchange の [Dependency Snippets (連動関係スニペット)] で pom.xml の連動関係情報を確認してください。

このコネクタでは、次の Service Bus バージョンがサポートされています。

  • Microsoft Azure Service Bus (クラウド)

  • Microsoft Windows Service Bus (オンプレミス)

このコネクタの新機能

Mule 4 のサポートが追加されました。

Design Center での接続方法

操作

  1. Design Center で、HTTP リスナやスケジューラなどのトリガをクリックします。

    トリガオプション
  2. To create an HTTP global element for the connector, set these fields:

    HTTP リスナの設定
    • Protocol: Protocol selected for the HTTP endpoint, it can be HTTP or HTTPS (secure).

    • Host: IP address where your Mule application listens for requests.

    • Port: Port address where your Mule application listens for requests.

    • Base Path (ベースパス): Mule アプリケーションが要求をリスンするパス。

  3. プラス記号を選択して、コンポーネントを追加します。

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

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

    • Configuration (設定)

      設定
      General (一般)

      項目

      説明

      Connection Type (接続種別)

      接続の種別: Shared Access Signature (共有アクセス署名)、Username and Password (ユーザ名とパスワード)、Windows。

      Encoding (エンコード)

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

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

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

      Ack Mode (肯定応答モード)

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

      Consumer Type (コンシューマタイプ)

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

      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 種別)

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

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

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

      Connection (接続)

      General (一般)

      項目

      説明

      Connection Type (接続種別)

      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 つだけセットアップする場合の一意のセキュリティトークン。この場合、トークンの有効期限が切れるとコネクタは自動的に再接続できなくなるので、フローの実行を停止し、この設定を新しいトークンで更新する必要があります。

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

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

      Connection (接続)

      General (一般)

      項目

      説明

      Connection Type (接続種別)

      Username Password (ユーザ名パスワード)

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

      General (一般)
      Connection (接続)
      General (一般)

      項目

      説明

      Connection Type (接続種別)

      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 に設定する必要があります。

Sources (ソース)

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 (サブスクリプションパス)

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

Anypoint Studio 7 での接続

このコネクタは、連動関係として Mule アプリケーションに追加すれば Anypoint Studio で使用できます。

Studio でコネクタをインストールする

  1. Anypoint Studio で Mule プロジェクトを開きます。

  2. コネクタを連動関係として pom.xml ファイルに追加します。

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

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 Service の名前空間。

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 の参照。ここでトークンプロバイダのインスタンスを設定する場合、コネクタがアクセスする必要がある各 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 を実行できません。このようなシナリオでは、この目的のために使用できる設定オプションで接続性テストをスキップする必要があります。スキップしない場合は、コネクタのスタートアップが失敗します。

ユースケース: 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!

Edit on GitHub