---
schema_version: "1"
id: 7036f6547be982a6b590b1c7b429bb818560835c838718e8ffd6238ba8d32277
title: VM Connector のメッセージ属性の伝播の例
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/vm-connector/latest/vm-propagate-messages.md
canonical_url: https://docs.mulesoft.com/jp/vm-connector/latest/vm-propagate-messages
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 72e8037581d53085780d12504d272cc53b9dee6a50dfb6eadb2fa06bcd8d6674
description: MuleSoft Documentation Site
release: "2.0"
latest: true
---
# VM Connector のメッセージ属性の伝播の例

次の例では、メッセージペイロードを介して VM キューからメッセージ属性を伝播する方法を示しています。最初のフローでは受信 HTTP メッセージ属性を受け入れ、さらに独自のカスタム属性を作成して、これらの両方の属性をメッセージペイロードに追加しているため、​**VM Publish**​ 操作でメッセージを VM キューにパブリッシュできます。2 番目のフローでは ​**VM Listener**​ ソースが前のフローからメッセージペイロードを受信し、独自のメッセージ属性を設定して、最後にメッセージペイロードがオブジェクトストアに保存されています。

次のスクリーンショットは、この例の Anypoint Studio アプリケーションフローを示しています。

![VM Connector のフロー例](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-example-messageflow.png)

Figure 1. VM Connector のメッセージ属性の伝播フロー

## [](#vm-パブリッシュフローを作成する)VM パブリッシュフローを作成する

VM パブリッシュフローでは最初に受信 HTTP メッセージ属性をリスンし、メッセージ属性を JSON 構造メッセージに変換します。最後に、​**VM Publish**​ 操作がメッセージを VM キューでパブリッシュします。  

VM パブリッシュフローを作成する手順は、次のとおりです。  

1. Studio で新しい Mule プロジェクトを作成します。
2. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**HTTP Listener**​ ソースを選択してキャンバスにドラッグします。  
    このソースは受信 HTTP メッセージ属性をリスンします。
3. **\[HTTP Listener\]**​ 設定画面で、​**\[Path (パス)\]**​ 項目を ​`/message`​ に設定します。
4. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の ​**HTTP リスナー**​のすべてのインスタンスで使用できるグローバル要素を設定します。
5. **\[Connection (接続)\]**​ セクションで ​**\[Protocol (プロトコル)\]**​ を ​`HTTP (Default)`​ に、​**\[Host (ホスト)\]**​ を ​`All Interfaces [0.0.0.0] (default)`​ に、​**\[Port (ポート)\]**​ を ​`8081`​ に設定します。
6. **\[Base path (ベースパス)\]**​ を ​`/publish`​ に設定します。
7. **\[Test Connection (接続をテスト)\]**​ をクリックして、Mule が指定されたサーバーに接続できることを確認します。
8. **\[OK\]**​ をクリックします。
9. **Transform Message**​ コンポーネントを ​**\[HTTP Listener\]**​ の右にドラッグします。  
    このコンポーネントは受信 HTTP メッセージ属性を JSON 構造に変換します。この構造には ​`listenerPath`​ 属性と ​`method`​ 属性の他、新しいカスタム ​`sizeAttribute`​ 属性が含まれます。
10. **Transform Message**​ コンポーネントの ​**\[Output Payload (出力ペイロード)\]**​ スクリプトビューで、次の DataWeave コードを使用して ​`listenerPath`​ 属性と ​`method`​ 属性を定義します。

```DataWeave
%dw 2.0
output application/json
---
{
listenerPath: attributes.listenerPath,
method: attributes.method
}
```

1. **Transform Message**​ コンポーネントの ​**\[Output Attributes (出力属性)\]**​ スクリプトビューで、次の DataWeave コードを使用して新しいカスタム ​`sizeAttribute`​ 属性を定義します。

```DataWeave
%dw 2.0
output application/json
---
{
sizeAttribute: sizeOf(attributes.listenerPath) + sizeOf(attributes.method)
}
```

1. **\[VM Publish\]**​ 操作を ​**Transform Message**​ コンポーネントの右にドラッグします。  
    この操作は、作成された JSON メッセージを VM キューでパブリッシュします。
2. **\[VM Publish\]**​ 設定画面で、​**\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (+) をクリックして、VM キューのグローバル要素を設定します。
3. **\[VM Config (VM 設定)\]**​ ウィンドウで、​**\[Queues (キュー)\]**​ に ​`Edit inline`​ を選択します。
4. **\[Queue (キュー)\]**​ ウィンドウで、​**\[Queue name (キュー名)\]**​ を ​`testqueue1`​ に、​**\[Queue type (キュー種別)\]**​ を ​`TRANSIENT (Default)`​ に、​**\[Max outstanding message (最大送信メッセージ数)\]**​ を ​`o`​ に設定します。
5. **\[Finish (完了)\]**​ をクリックします。
6. **\[OK\]**​ をクリックします。

Studio での ​**\[VM Config (VM 設定)\]**​ のグローバル要素設定は次のようになります。

![「VM Config (VM 設定)」 のグローバル要素設定](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-example-publish2.png)

Figure 2. \[VM Config (VM 設定)\] のグローバル要素設定

1. **\[VM Publish\]**​ 設定画面の ​**\[General (一般)\] > \[Content (コンテンツ)\]**​ 項目で、次の DataWeave コードを定義します。

```DataWeave
%dw 2.0
output application/json
---
{'listenerPath': payload.listenerPath, 'method': payload.method, 'messageSize': attributes.sizeAttribute }
```

Studio での ​**VM Publish**​ 操作設定は次のようになります。

![VM Publish 操作設定](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-example-publish1.png)

Figure 3. VM Publish 操作設定

## [](#vm-リスンフローを作成する)VM リスンフローを作成する

VM リスンフローは前の VM Publish フローからの VM キューの受信メッセージ属性をリスンし、​**VM Listener**​ ソースを通じて独自の属性を設定します。最後に、メッセージペイロードをオブジェクトストアに保存します。  

VM リスンフローを作成する手順は、次のとおりです。  

1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**VM Listener**​ ソースを選択してキャンバスの最初の VM Publish フローの下にドラッグします。  
    このソースは前のフローからの受信メッセージ属性をリスンします。
2. **\[VM Listener\]**​ 設定画面で、​**\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (+) をクリックして、VM Publish フローで作成した VM キュー設定を選択します。

Studio での ​**VM Listener**​ ソース設定は次のようになります。

![VM Listener ソース設定](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-example-listener.png)

Figure 4. VM Listener ソース設定

1. **Logger**​ コンポーネントを ​**VM Listener**​ の右にドラッグします。
2. **\[Logger\]**​ 設定画面で、​**\[Message (メッセージ)\]**​ 項目を ​`payload`​ に設定します。
3. 別の ​**Logger**​ コンポーネントを最初の ​**Logger**​ コンポーネントの右にドラッグします。
4. **\[Logger\]**​ 設定画面で、​**\[Message (メッセージ)\]**​ 項目を ​`'VM message attributes: queue name ' ++ attributes.queueName as String`​ に設定します。
5. **\[ObjectStore Store\]**​ 操作を 2 番目の ​**Logger**​ コンポーネントの右にドラッグします。  
    この操作は、受信した ​`'method':'listenerPath'`​ ペア属性をオブジェクトストアに保存します。
6. **\[ObjectStore Store\]**​ 設定画面で、​**\[Display Name (表示名)\]**​ 項目を ​`Add Http Request`​ に設定します。
7. **\[General (一般)\]**​ セクションで、​**\[Key (キー)\]**​ を ​`payload.method`​ に、​**\[Value (値)\]**​ を ​`payload.listenerPath`​ に設定します。
8. **\[Object Store (オブジェクトストア)\]**​ 項目の横にあるプラス記号をクリックし、グローバルオブジェクトストア設定を定義します。
9. デフォルト値を設定して、​**\[OK\]**​ をクリックします。
10. プロジェクトを保存して、アプリケーションを実行します。
11. 要求を ​`http://127.0.0.1:8081/publish/message`​ に送信してアプリケーションをテストします。

## [](#vm-キューを通じたメッセージ属性の伝播の-xml)VM キューを通じたメッセージ属性の伝播の XML

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。

```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>
```

## [](#関連情報)関連情報

- [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors)
- [MuleSoft ヘルプセンター](https://help.mulesoft.com)