Flex Gateway新着情報
Governance新着情報
Monitoring API Managerこのセクションの例では、次の作業を行うアプリケーションフローを示します。
Azure Service Bus とのメッセージの送受信を行う
メッセージを送信およびリスンし、MANUAL
肯定応答種別を使用して肯定応答を受信する
これらの例では、一部の項目値に変数を使用しています。次のいずれかを実行できます。
コード内の変数をその値に置き換える
プロパティファイルで各変数の値を指定し、コネクタ設定からそのファイルを参照する
プロパティファイルの使用についての詳細は、「Configuring Property Placeholders (プロパティプレースホルダーの設定)」を参照してください。
Java 8
Anypoint Studio 7.1.0 以降
Mule Runtime 4.2.x EE 以降
Azure Portal でテストするための新しいキューの作成
新しい 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>
xml
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>
xml
プロジェクトを保存します。
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>
xml
doc:id
値を再生成するように求められたら、[Yes (はい)] をクリックします。
プロジェクトを保存します。
Studio キャンバスを右クリックし、[Run project <project-name> (<project-name> プロジェクトを実行)] を選択してプロジェクトを実行します。
インスタンスの認証に Azure Active Directory を使用する組織もあります。上記の例のいずれも変更してこのシナリオに対応できます。Shared Access Signature (共有アクセス署名) 認証を Azure Active Directory 認証に置き換えます。
<azure-service-bus-messaging:sas-connection namespace="${azure.namespace}" sharedAccessKeyName="${azure.keyname}" sharedAccessKey="${azure.key}" />
xml
<azure-service-bus-messaging:aad-connection namespace="${azure.namespace}" tenantId="${azure.tenantId}" clientId="${azure.clientId}" clientSecret="${azure.clientSecret}" />
xml
次の点を確認してください。
mule-app.properties
ファイルに [Tenant Id (テナント ID)]、[Client Id (クライアント ID)]、および [Client Secret (クライアントシークレット)] 項目が含まれている。
アプリケーション登録に適切な 権限とロールが含まれている。