このセクションの例では、次の作業を行うアプリケーションフローを示します。
-
Azure Service Bus とのメッセージの送受信を行う
-
メッセージを送信およびリスンし、
MANUAL 肯定応答種別を使用して肯定応答を受信する
これらの例では、一部の項目値に変数を使用しています。次のいずれかを実行できます。
-
コード内の変数をその値に置き換える
-
プロパティファイルで各変数の値を指定し、コネクタ設定からそのファイルを参照する
プロパティファイルの使用についての詳細は、「Configuring Property Placeholders (プロパティプレースホルダーの設定)」を参照してください。
Mule プロジェクトを作成する
新しい Mule プロジェクトを作成してログイン情報を設定したら、提供される XML コードを使用して各例のアプリケーションフローを作成できます。
Mule プロジェクトを作成する手順は、次のとおりです。
-
Studio で、[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)] を選択します。
-
Mule プロジェクトの名前を入力して、[Finish (完了)] をクリックします。
-
mule-app.properties という名前のファイルを作成して、<project-name>/src/main/resources に保存します。 -
mule-app.properties ファイルで Azure 接続ログイン情報を設定し、作成した Azure キューの名前を含めます。次に例を示します。#============================================================== #Connection Parameters #============================================================== # Azure common authentication configuration azure.namespace=myazure queue.name=mytestqueue # Shared Access Signature authentication azure.keyname=SAStokenname azure.key=SAStoken # Azure Active Directory authentication azure.tenantId=TenantId azure.clientId=ClientId azure.clientSecret=ClientSecret
-
ファイルを保存します。
-
[Global Element Configuration (グローバル要素設定)] を開き、[Test Connection (接続をテスト)] をクリックして、ログイン情報を検証します。
送受信の例
このフローは、Send および Receive From Queue 操作を使用して、メッセージを送受信する方法を示しています。
このフローを作成する手順は、次のとおりです。
-
Studio キャンバスで Configuration XML (設定 XML) をクリックします。
-
<?xml version="1.0" encoding="UTF-8"?> 行の後のすべてのコンテンツを削除します。 -
次の XML をコピーして、
<?xml version="1.0" encoding="UTF-8"?> 行の後に貼り付けます。<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:azure-service-bus-messaging="http://www.mulesoft.org/schema/mule/azure-service-bus-messaging" 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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.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/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/azure-service-bus-messaging http://www.mulesoft.org/schema/mule/azure-service-bus-messaging/current/mule-azure-service-bus-messaging.xsd"> <configuration-properties file="mule-app.properties" doc:name="Configuration properties"/> <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="290d1aa8-2e61-4707-8f04-65f0e5e4cf07" > <http:listener-connection host="0.0.0.0" port="8081" /> </http:listener-config> <azure-service-bus-messaging:config name="Azure_Service_Bus_Messaging_Connector_Config" doc:name="Azure Service Bus Messaging Connector Config" doc:id="71d0e711-6d29-4eff-b640-00986a41dfbc" > <azure-service-bus-messaging:sas-connection namespace="${azure.namespace}" sharedAccessKeyName="${azure.keyname}" sharedAccessKey="${azure.key}" /> </azure-service-bus-messaging:config> <flow name="send-flow" doc:id="2c8bce62-f192-4db2-9c70-792a5e78ac7f" > <http:listener doc:name="Send Message Endpoint" doc:id="aa79c404-2e41-4453-9fde-18b8ea74c805" config-ref="HTTP_Listener_config" path="/sendMessage" /> <ee:transform doc:name="Set Payload and Attributes" doc:id="bddebf8d-6d63-4db0-990f-94ecec23ddbd"> <ee:message> <ee:set-payload><![CDATA[%dw 2.0 output application/json --- { key1: "value1", key2: "value2 for Queue" }]]></ee:set-payload> </ee:message> <ee:variables> <ee:set-variable variableName="messageAttributes"><![CDATA[%dw 2.0 output application/json --- { messageId: "messageId1234", correlationStrategy: "AUTO", correlationId: "correlationId", label: "my_label", partitionKey: "the_partition_key", timeToLive: 60, ttlTimeUnit: "SECONDS", scheduledEnqueueTimeUtc: "2018-12-09 03:01:00.000", properties: { property1: "value1", property2: "value2" } }]]></ee:set-variable> </ee:variables> </ee:transform> <azure-service-bus-messaging:send doc:name="Queue Send" doc:id="50b3592c-f777-4667-b042-00fd266120e8" config-ref="Azure_Service_Bus_Messaging_Connector_Config" destinationName="${queue.name}" messageId="#[vars.messageAttributes.messageId]" correlationId="#[vars.messageAttributes.correlationId]" label="#[vars.messageAttributes.label]" sendCorrelationStrategy="#[vars.messageAttributes.correlationStrategy]" partitionKey="#[vars.messageAttributes.partitionKey]" timeToLive="#[vars.messageAttributes.timeToLive]" scheduledEnqueueTimeUtc='#[vars.messageAttributes.scheduledEnqueueTimeUtc as LocalDateTime {format: "yyyy-MM-dd HH:mm:ss.SSS"}]' timeToLiveTimeUnit="#[vars.messageAttributes.ttlTimeUnit]" properties="#[vars.messageAttributes.properties]"> </azure-service-bus-messaging:send> </flow> <flow name="queue-receiver-flow" doc:id="9b39aaa5-e81f-4257-b65e-d4f48c8ef2d8" > <http:listener doc:name="Receive From Queue" doc:id="386337a0-99c9-45cf-a81f-95d5e06f0b74" config-ref="HTTP_Listener_config" path="/receive"/> <azure-service-bus-messaging:receive doc:name="Receive From Queue" doc:id="05c8c754-79f6-4873-8329-af7f48f01d3b" config-ref="Azure_Service_Bus_Messaging_Connector_Config" destinationName="${queue.name}"/> <ee:transform doc:name="Attributes to Json" doc:id="a509a361-4bd7-4c6e-81cc-39ad36e7b625"> <ee:message> </ee:message> <ee:variables > <ee:set-variable variableName="jsonAttributes" ><![CDATA[%dw 2.0 output application/json --- attributes]]></ee:set-variable> </ee:variables> </ee:transform> <logger level="INFO" doc:name="Log Attributes" doc:id="94e7254c-a197-4fa2-b437-b64719acb23d" message="#[vars.jsonAttributes]" /> <logger level="INFO" doc:name="Log the message body" doc:id="d802b081-f3fc-4ec2-a23c-96bc0db3863c" message="#[payload]" /> </flow> </mule> -
doc:id 値を再生成するように求められたら、[Yes (はい)] をクリックします。 -
プロジェクトを保存します。
-
Studio キャンバスを右クリックし、[Run project <project-name> (<project-name> プロジェクトを実行)] を選択してプロジェクトを実行します。
バッチ送受信の例
アプリケーションフローでは、Send batch および Receive Batch 操作を使用して、Azure Service Bus キューのメッセージのバッチを送受信できます。
次のスクリーンショットは、バッチメッセージを送受信するアプリケーションフローを示しています。
このフローを作成する手順は、次のとおりです。
-
Studio キャンバスで Configuration XML (設定 XML) をクリックします。
-
<?xml version="1.0" encoding="UTF-8"?> 行の後のすべてのコンテンツを削除します。 -
次の XML をコピーして、
<?xml version="1.0" encoding="UTF-8"?> 行の後に貼り付けます。<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:azure-service-bus-messaging="http://www.mulesoft.org/schema/mule/azure-service-bus-messaging" 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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.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/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/azure-service-bus-messaging http://www.mulesoft.org/schema/mule/azure-service-bus-messaging/current/mule-azure-service-bus-messaging.xsd"> <configuration-properties file="mule-app.properties" doc:name="Configuration properties"/> <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="290d1aa8-2e61-4707-8f04-65f0e5e4cf07" > <http:listener-connection host="0.0.0.0" port="8081" /> </http:listener-config> <azure-service-bus-messaging:config name="Azure_Service_Bus_Messaging_Connector_Config" doc:name="Azure Service Bus Messaging Connector Config" doc:id="71d0e711-6d29-4eff-b640-00986a41dfbc" > <azure-service-bus-messaging:sas-connection namespace="${azure.namespace}" sharedAccessKeyName="${azure.keyname}" sharedAccessKey="${azure.key}" /> </azure-service-bus-messaging:config> <flow name="send-batch-flow" doc:id="2c8bce62-f192-4db2-9c70-792a5e78ac7f" > <http:listener doc:name="Send Message Endpoint" doc:id="aa79c404-2e41-4453-9fde-18b8ea74c805" config-ref="HTTP_Listener_config" path="/sendBatch" /> <ee:transform doc:name="Messages with Json Bodies and Properties" doc:id="1f28f155-28c8-4feb-834c-0e790cac7a53" > <ee:message > </ee:message> <ee:variables > <ee:set-variable variableName="messages" ><![CDATA[%dw 2.0 output application/java --- [{ body: "{\"key1\":\"value1\",\"key2\":\"otherValue1\"}" as Binary, messageId: "messageId1", sendCorrelationStrategy: "AUTO", correlationId: "correlation1", contentType: "application/json", replyToSessionId: "replyToSessionId1", label: "label_msg1", partitionKey: "the_partition_key1", timeToLive: 240, timeToLiveTimeUnit: "SECONDS", zoneId: "America/Buenos_Aires", scheduledEnqueueTimeUtc: "2018-12-09-00-0800" as LocalDateTime {format: "yyyy-MM-dd-HHZZZ"}, properties: { property1: "value1", property2: "value2" }, }, { body: "{\"key1\":\"value2\",\"key2\":\"otherValue2\"}" as Binary, messageId: "messageId2", sendCorrelationStrategy: "AUTO", correlationId: "correlation2", contentType: "application/json", replyToSessionId: "replyToSessionId2", label: "label_msg2", partitionKey: "the_partition_key2", timeToLive: 240, timeToLiveTimeUnit: "SECONDS", zoneId: "America/Buenos_Aires", scheduledEnqueueTimeUtc: "2018-12-09-00-0800" as LocalDateTime {format: "yyyy-MM-dd-HHZZZ"}, properties: { property1: "value1", property2: "value2" }, }, { body: "{\"key1\":\"value3\",\"key2\":\"otherValue3\"}" as Binary, messageId: "messageId3", sendCorrelationStrategy: "AUTO", correlationId: "correlation3", contentType: "application/json", replyToSessionId: "replyToSessionId3", label: "label_msg3", partitionKey: "the_partition_key3", timeToLive: 240, timeToLiveTimeUnit: "SECONDS", zoneId: "America/Buenos_Aires", scheduledEnqueueTimeUtc: "2018-12-09-00-0800" as LocalDateTime {format: "yyyy-MM-dd-HHZZZ"}, properties: { property1: "value1", property2: "value2" }, }]]]></ee:set-variable> </ee:variables> </ee:transform> <azure-service-bus-messaging:send-message-batch destinationName="${queue.name}" doc:name="Send batch of messages" doc:id="799d9ba3-68a9-4ef7-b518-6a715429b2a7" config-ref="Azure_Service_Bus_Messaging_Connector_Config"> <azure-service-bus-messaging:messages ><![CDATA[#[vars.messages]]]></azure-service-bus-messaging:messages> </azure-service-bus-messaging:send-message-batch> <set-payload value='#[%dw 2.0 output application/json --- { result: "Messages sent!" }]' doc:name="Set Payload" doc:id="c8b39b61-fa84-496d-b92c-e970a1a44003" /> </flow> <flow name="queue-receiver-flow" doc:id="9b39aaa5-e81f-4257-b65e-d4f48c8ef2d8" > <http:listener doc:name="Receive Batch From Queue" doc:id="386337a0-99c9-45cf-a81f-95d5e06f0b74" config-ref="HTTP_Listener_config" path="/receiveBatch"/> <azure-service-bus-messaging:receive-batch doc:name="Receive Batch" doc:id="ee30123a-cc9f-4e08-a2e9-c41aede3923f" config-ref="Azure_Service_Bus_Messaging_Connector_Config" maxMessageCount="3" destinationName="${queue.name}"/> <foreach doc:name="For Each" doc:id="16a42925-3142-48c7-9973-f951029af5fa" > <logger level="INFO" doc:name="Logger" doc:id="a5bfc3c6-2335-4c4e-845e-a67cf990a510" message='#["Received message number " ++ vars.counter]'/> <ee:transform doc:name="Attributes to Json" doc:id="a509a361-4bd7-4c6e-81cc-39ad36e7b625"> <ee:message> </ee:message> <ee:variables> <ee:set-variable variableName="jsonAttributes"><![CDATA[%dw 2.0 output application/json --- attributes]]></ee:set-variable> </ee:variables> </ee:transform> <logger level="INFO" doc:name="Log Attributes" doc:id="94e7254c-a197-4fa2-b437-b64719acb23d" message="#[vars.jsonAttributes]" /> <logger level="INFO" doc:name="Log the message body" doc:id="d802b081-f3fc-4ec2-a23c-96bc0db3863c" message="#[%dw 2.0 output application/json --- payload]" /> </foreach> </flow> </mule> -
プロジェクトを保存します。
-
Studio キャンバスを右クリックし、[Run project <project-name> (<project-name> プロジェクトを実行)] を選択してプロジェクトを実行します。
メッセージの送信、リスン、肯定応答の例
このアプリケーションフローでは、Send および Message Listener 操作を使用します。Message Listener は、MANUAL 肯定応答種別を使用します。つまり、アプリケーションロジックでメッセージ受信の肯定応答を行います。この例では、Complete 操作を Message Listener と同じフローに追加することでそのロジックが提供されます。
次のスクリーンショットは、このフローを示しています。
このフローを作成する手順は、次のとおりです。
-
Studio キャンバスで Configuration XML (設定 XML) をクリックします。
-
<?xml version="1.0" encoding="UTF-8"?> 行の後のすべてのコンテンツを削除します。 -
次の XML をコピーして、
<?xml version="1.0" encoding="UTF-8"?> 行の後に貼り付けます。<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:azure-service-bus-messaging="http://www.mulesoft.org/schema/mule/azure-service-bus-messaging" 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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.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/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/azure-service-bus-messaging http://www.mulesoft.org/schema/mule/azure-service-bus-messaging/current/mule-azure-service-bus-messaging.xsd"> <configuration-properties file="mule-app.properties" doc:name="Configuration properties"/> <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="290d1aa8-2e61-4707-8f04-65f0e5e4cf07" > <http:listener-connection host="0.0.0.0" port="8081" /> </http:listener-config> <azure-service-bus-messaging:config name="Azure_Service_Bus_Messaging_Connector_Config" doc:name="Azure Service Bus Messaging Connector Config" doc:id="71d0e711-6d29-4eff-b640-00986a41dfbc" > <azure-service-bus-messaging:sas-connection namespace="${azure.namespace}" sharedAccessKeyName="${azure.keyname}" sharedAccessKey="${azure.key}" /> </azure-service-bus-messaging:config> <flow name="send-endpoint-flow" doc:id="2c8bce62-f192-4db2-9c70-792a5e78ac7f" > <http:listener doc:name="Send Queue Endpoint" doc:id="aa79c404-2e41-4453-9fde-18b8ea74c805" config-ref="HTTP_Listener_config" path="/sendMessage" /> <ee:transform doc:name="Set Payload and Attributes" doc:id="bddebf8d-6d63-4db0-990f-94ecec23ddbd" > <ee:message > <ee:set-payload ><![CDATA[%dw 2.0 output application/json --- { key1: "value1", key2: "value2 for Queue" }]]></ee:set-payload> </ee:message> <ee:variables > <ee:set-variable variableName="messageAttributes" ><![CDATA[%dw 2.0 output application/json --- { messageId: "messageId1234", correlationStrategy: "AUTO", correlationId: "correlationId", label: "my_label", partitionKey: "the_partition_key", timeToLive: 60, ttlTimeUnit: "SECONDS", scheduledEnqueueTimeUtc: "2018-12-09 03:01:00.000", properties: { property1: "value1", property2: "value2" } }]]></ee:set-variable> </ee:variables> </ee:transform> <azure-service-bus-messaging:send doc:name="Queue Send" doc:id="50b3592c-f777-4667-b042-00fd266120e8" config-ref="Azure_Service_Bus_Messaging_Connector_Config" destinationName="${queue.name}" messageId='#[vars.messageAttributes.messageId]' correlationId="#[vars.messageAttributes.correlationId]" label="#[vars.messageAttributes.label]" sendCorrelationStrategy="#[vars.messageAttributes.correlationStrategy]" partitionKey="#[vars.messageAttributes.partitionKey]" timeToLive="#[vars.messageAttributes.timeToLive]" scheduledEnqueueTimeUtc='#[vars.messageAttributes.scheduledEnqueueTimeUtc as LocalDateTime {format: "yyyy-MM-dd HH:mm:ss.SSS"}]' timeToLiveTimeUnit="#[vars.messageAttributes.ttlTimeUnit]" properties="#[vars.messageAttributes.properties]"> </azure-service-bus-messaging:send> </flow> <flow name="listener-manual-ack-flow" doc:id="541d4149-41b1-43e4-8d61-c16cf3ee502f" > <azure-service-bus-messaging:message-listener doc:name="Message listener" doc:id="cb61833e-9e1f-48b3-9430-a83b47c11a4c" config-ref="Azure_Service_Bus_Messaging_Connector_Config" ackMode="MANUAL" destinationName="${queue.name}" numberOfConsumers="1"/> <logger level="INFO" doc:name="Log the message" doc:id="d802b081-f3fc-4ec2-a23c-96bc0db3863c" message="#[payload]"/> <ee:transform doc:name="Attributes to Json" doc:id="a509a361-4bd7-4c6e-81cc-39ad36e7b625" > <ee:message > <ee:set-payload ><![CDATA[%dw 2.0 output application/json --- attributes]]></ee:set-payload> </ee:message> </ee:transform> <logger level="INFO" doc:name="Log Attributes" doc:id="94e7254c-a197-4fa2-b437-b64719acb23d" message="#[payload]"/> <azure-service-bus-messaging:complete-message doc:name="Ack of Message" doc:id="6aa7238b-3bc9-4a61-a39b-e1bd260ee7c5" config-ref="Azure_Service_Bus_Messaging_Connector_Config" lockToken="#[attributes.lockToken]" /> <logger level="INFO" doc:name="Log Lock Token" doc:id="a91eea3e-231a-4675-9457-b6c7366ab647" message='#["LockToken = " ++ payload.lockToken]'/> </flow> </mule> -
doc:id 値を再生成するように求められたら、[Yes (はい)] をクリックします。 -
プロジェクトを保存します。
-
Studio キャンバスを右クリックし、[Run project <project-name> (<project-name> プロジェクトを実行)] を選択してプロジェクトを実行します。
Azure Active Directory Connector Provider を使用する
インスタンスの認証に Azure Active Directory を使用する組織もあります。上記の例のいずれも変更してこのシナリオに対応できます。Shared Access Signature (共有アクセス署名) 認証を Azure Active Directory 認証に置き換えます。
<azure-service-bus-messaging:sas-connection namespace="${azure.namespace}" sharedAccessKeyName="${azure.keyname}" sharedAccessKey="${azure.key}" />
<azure-service-bus-messaging:aad-connection namespace="${azure.namespace}" tenantId="${azure.tenantId}" clientId="${azure.clientId}" clientSecret="${azure.clientSecret}" />
次の点を確認してください。
-
mule-app.properties ファイルに [Tenant Id (テナント ID)]、[Client Id (クライアント ID)]、および [Client Secret (クライアントシークレット)] 項目が含まれている。 -
アプリケーション登録に適切な 権限とロールが含まれている。