Flex Gateway新着情報
Governance新着情報
Monitoring API Manager次の例では、メッセージペイロードを介して VM キューからメッセージ属性を伝播する方法を示しています。最初のフローでは受信 HTTP メッセージ属性を受け入れ、さらに独自のカスタム属性を作成して、これらの両方の属性をメッセージペイロードに追加しているため、VM Publish 操作でメッセージを VM キューにパブリッシュできます。2 番目のフローでは VM Listener ソースが前のフローからメッセージペイロードを受信し、独自のメッセージ属性を設定して、最後にメッセージペイロードがオブジェクトストアに保存されています。
次のスクリーンショットは、この例の Anypoint Studio アプリケーションフローを示しています。
VM パブリッシュフローでは最初に受信 HTTP メッセージ属性をリスンし、メッセージ属性を JSON 構造メッセージに変換します。最後に、VM Publish 操作がメッセージを VM キューでパブリッシュします。
VM パブリッシュフローを作成する手順は、次のとおりです。
Studio で新しい Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] ビューで、HTTP Listener ソースを選択してキャンバスにドラッグします。
このソースは受信 HTTP メッセージ属性をリスンします。
[HTTP Listener] 設定画面で、[Path (パス)] 項目を /message
に設定します。
[Connector configuration (コネクタ設定)] 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の HTTP リスナーのすべてのインスタンスで使用できるグローバル要素を設定します。
[Connection (接続)] セクションで [Protocol (プロトコル)] を HTTP (Default)
に、[Host (ホスト)] を All Interfaces [0.0.0.0] (default)
に、[Port (ポート)] を 8081
に設定します。
[Base path (ベースパス)] を /publish
に設定します。
[Test Connection (接続をテスト)] をクリックして、Mule が指定されたサーバーに接続できることを確認します。
[OK] をクリックします。
Transform Message コンポーネントを [HTTP Listener] の右にドラッグします。
このコンポーネントは受信 HTTP メッセージ属性を JSON 構造に変換します。この構造には listenerPath
属性と method
属性の他、新しいカスタム sizeAttribute
属性が含まれます。
Transform Message コンポーネントの [Output Payload (出力ペイロード)] スクリプトビューで、次の DataWeave コードを使用して listenerPath
属性と method
属性を定義します。
%dw 2.0
output application/json
---
{
listenerPath: attributes.listenerPath,
method: attributes.method
}
Transform Message コンポーネントの [Output Attributes (出力属性)] スクリプトビューで、次の DataWeave コードを使用して新しいカスタム sizeAttribute
属性を定義します。
%dw 2.0
output application/json
---
{
sizeAttribute: sizeOf(attributes.listenerPath) + sizeOf(attributes.method)
}
[VM Publish] 操作を Transform Message コンポーネントの右にドラッグします。
この操作は、作成された JSON メッセージを VM キューでパブリッシュします。
[VM Publish] 設定画面で、[Connector configuration (コネクタ設定)] 項目の横にあるプラス記号 (+) をクリックして、VM キューのグローバル要素を設定します。
[VM Config (VM 設定)] ウィンドウで、[Queues (キュー)] に Edit inline
を選択します。
[Queue (キュー)] ウィンドウで、[Queue name (キュー名)] を testqueue1
に、[Queue type (キュー種別)] を TRANSIENT (Default)
に、[Max outstanding message (最大送信メッセージ数)] を o
に設定します。
[Finish (完了)] をクリックします。
[OK] をクリックします。
Studio での [VM Config (VM 設定)] のグローバル要素設定は次のようになります。
[VM Publish] 設定画面の [General (一般)] > [Content (コンテンツ)] 項目で、次の DataWeave コードを定義します。
%dw 2.0
output application/json
---
{'listenerPath': payload.listenerPath, 'method': payload.method, 'messageSize': attributes.sizeAttribute }
Studio での VM Publish 操作設定は次のようになります。
VM リスンフローは前の VM Publish フローからの VM キューの受信メッセージ属性をリスンし、VM Listener ソースを通じて独自の属性を設定します。最後に、メッセージペイロードをオブジェクトストアに保存します。
VM リスンフローを作成する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューで、VM Listener ソースを選択してキャンバスの最初の VM Publish フローの下にドラッグします。
このソースは前のフローからの受信メッセージ属性をリスンします。
[VM Listener] 設定画面で、[Connector configuration (コネクタ設定)] 項目の横にあるプラス記号 (+) をクリックして、VM Publish フローで作成した VM キュー設定を選択します。
Studio での VM Listener ソース設定は次のようになります。
Logger コンポーネントを VM Listener の右にドラッグします。
[Logger] 設定画面で、[Message (メッセージ)] 項目を payload
に設定します。
別の Logger コンポーネントを最初の Logger コンポーネントの右にドラッグします。
[Logger] 設定画面で、[Message (メッセージ)] 項目を 'VM message attributes: queue name ' ++ attributes.queueName as String
に設定します。
[ObjectStore Store] 操作を 2 番目の Logger コンポーネントの右にドラッグします。
この操作は、受信した 'method':'listenerPath'
ペア属性をオブジェクトストアに保存します。
[ObjectStore Store] 設定画面で、[Display Name (表示名)] 項目を Add Http Request
に設定します。
[General (一般)] セクションで、[Key (キー)] を payload.method
に、[Value (値)] を payload.listenerPath
に設定します。
[Object Store (オブジェクトストア)] 項目の横にあるプラス記号をクリックし、グローバルオブジェクトストア設定を定義します。
デフォルト値を設定して、[OK] をクリックします。
プロジェクトを保存して、アプリケーションを実行します。
要求を http://127.0.0.1:8081/publish/message
に送信してアプリケーションをテストします。
この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:sockets="http://www.mulesoft.org/schema/mule/sockets"
xmlns:os="http://www.mulesoft.org/schema/mule/os" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:vm="http://www.mulesoft.org/schema/mule/vm"
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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd 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/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd
http://www.mulesoft.org/schema/mule/os http://www.mulesoft.org/schema/mule/os/current/mule-os.xsd
http://www.mulesoft.org/schema/mule/sockets http://www.mulesoft.org/schema/mule/sockets/current/mule-sockets.xsd">
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" basePath="/publish" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<vm:config name="VM_Config" doc:name="VM Config">
<vm:connection />
<vm:queues>
<vm:queue queueName="testQueue1" queueType="TRANSIENT"/>
</vm:queues>
</vm:config>
<os:object-store name="Object_store" doc:name="Object store"/>
<flow name="vm-publishFlow" >
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/message"/>
<ee:transform doc:name="Transform Message">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
{
listenerPath: attributes.listenerPath,
method: attributes.method
}
]]>
</ee:set-payload>
<ee:set-attributes><![CDATA[%dw 2.0
output application/json
---
{
sizeAttribute: sizeOf(attributes.listenerPath) + sizeOf(attributes.method)
}
]]></ee:set-attributes>
</ee:message>
</ee:transform>
<vm:publish doc:name="Publish" config-ref="VM_Config" queueName="testQueue1">
<vm:content ><![CDATA[#[%dw 2.0
output application/json
---
{'listenerPath': payload.listenerPath, 'method': payload.method, 'messageSize': attributes.sizeAttribute }]]]></vm:content>
</vm:publish>
</flow>
<flow name="vm-listenerFlow" >
<vm:listener doc:name="Listener" config-ref="VM_Config" queueName="testQueue1"/>
<logger level="INFO" doc:name="Logger" message="payload"/>
<logger level="INFO" doc:name="Logger" message="'VM message attributes: queue name ' ++ attributes.queueName as String"/>
<os:store doc:name=" Add Http Request" key="payload.method" objectStore="Object_store">
<os:value ><![CDATA[payload.listenerPath]]></os:value>
</os:store>
</flow>
</mule>