---
schema_version: "1"
id: 9cba019885dcc1180cbc0bf7c4d1e4edd8ce8cf97fcf7e78a59de55ee8d7887d
title: JMS Connector を使用したメッセージのパブリッシュ
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/jms-connector/1.7/jms-publish.md
canonical_url: https://docs.mulesoft.com/jp/jms-connector/1.7/jms-publish
source_site: docs.mulesoft.com
content_type: documentation
content_hash: f6737d89d00f5d459c1ab3fab3cd6696e98172d9e0707d73e624939dda8273e5
description: MuleSoft Documentation Site
release: "1.7"
latest: false
---
# JMS Connector を使用したメッセージのパブリッシュ

JMS 用 Anypoint Connector (JMS Connector) の ​**Publish**​ 操作を使用すると、新しい JMS メッセージを作成し、キューまたはトピックにかかわらず指定した宛先に送信できます。この操作を使用して、メッセージの内容だけでなく、必要なヘッダーも設定できます。

## [](#キューへのメッセージのパブリッシュ)キューへのメッセージのパブリッシュ

**Publish**​ 操作では、メッセージペイロード内のすべての内容を、指定したキューにパブリッシュします。次の例では、​**\[Destination (宛先)\]**​ 項目で指定したキューにメッセージをパブリッシュするように操作を設定します:

1. Studio フローで、​**\[Publish\]**​ 操作を選択します。
2. **\[Destination (宛先)\]**​ 項目をキュー名 (​`invoiceQueue`​ など) に設定します。

![「Publish」 設定画面で 「Destination (宛先)」 項目を、メッセージの送信先である宛先の名前に設定する](/mulesoft/current/ja-jp/jms-connector/1.7/_images/jms-publish-config-1.png)

Figure 1. キューへの Publish 操作の設定

XML エディターでは、​`<jms:publish>`​ および ​`destination`​ の設定は次のように記述されます。

```xml
<jms:publish destination="invoiceQueue" config-ref="JMS_config"/>
```

適切な形式ではないためにペイロードを変換する必要がある場合、​**Publish**​ 操作の前に DataWeave 変換を配置できますが、これによりメッセージペイロードが変更され、変換の後に配置された操作に影響することがあります。  
この影響を回避するには、​**Publish**​ 操作の内部に DataWeave 変換を配置します。この変換では、送信中のメッセージに影響することなく、パブリッシュするコンテンツが生成されます。次の例では、操作の内部で変換を設定します。

1. Studio フローで、​**\[Publish\]**​ 操作を選択します。
2. **\[Destination (宛先)\]**​ 項目をキュー名 (​`invoiceQueue`​ など) に設定します。
3. **\[Body (本文)\]**​ 項目で、次の DataWeave 変換を設定します。

```DataWeave
%dw 2.0
output application/json
---
payload.payments
```

![「Publish」 設定画面で、DataWeave 変換を 「Body (本文)」 項目の内部に配置する](/mulesoft/current/ja-jp/jms-connector/1.7/_images/jms-publish-config-2.png)

Figure 2. Publish 操作での DataWeave 変換の設定

XML エディターでは、​`<jms:body>`​ 設定は次のように記述されます。

```xml
<jms:publish destination="invoiceQueue" config-ref="JMS_config">
  <jms:message>
    <jms:body>#[%dw 2.0
   output application/json
   ---
   payload.payments
   ]</jms:body>
  </jms:message>
</jms:publish>
```

## [](#トピックへのメッセージのパブリッシュ)トピックへのメッセージのパブリッシュ

**Publish**​ 操作では、指定したトピック宛先にメッセージをパブリッシュすることもできます。操作とメッセージのすべての設定は同じため、​**\[Destination type (宛先種別)\]**​ 項目を ​**\[TOPIC (トピック)\]**​ に設定するだけで済みます。

次の例では、トピック宛先にメッセージをパブリッシュするように操作を設定します。

1. Studio フローで、​**\[Publish\]**​ 操作を選択します。
2. **\[Destination (宛先)\]**​ 項目をキュー名に設定します。例: .トピック宛先への Publish 操作の設定 image::jms-publish-config-3.png\[「Publish」 設定画面で、「Destination type (宛先種別)」 項目を 「TOPIC (トピック)」 に設定する\]

XML エディターでは、​`<jms:publish>`​ および ​`destinationType`​ の設定は次のように記述されます。

```xml
<jms:publish destination="invoiceEvents" destinationType="TOPIC" config-ref="JMS_config">
  <jms:message>
    <jms:body>#[%dw 2.0
   output application/json
   ---
   payload.payments
   ]</jms:body>
  </jms:message>
</jms:publish>
```

## [](#メッセージ配信のカスタマイズ)メッセージ配信のカスタマイズ

各 JMS メッセージには一連のヘッダーがあり、これらを使用して存続期間やメッセージの優先度などのメタデータを渡すことができます。

### [](#優先キューの設定)優先キューの設定

優先キューを設定するには、​**\[Priority (優先度)\]**​ 項目をデフォルトとは異なる値に設定します。

1. Studio フローで、​**\[Publish\]**​ 操作を選択します。
2. **\[Destination (宛先)\]**​ 項目をキュー名 (​`priorityQueue`​ など) に設定します。
3. **\[Publish Configuration (パブリッシュ設定)\]**​ セクションで、​**\[Priority (優先度)\]**​ 項目を ​`attributes.queryParams.priority`​ に設定します。

![「Publish」 設定画面で、「Priority (優先度)」 項目の値を設定する](/mulesoft/current/ja-jp/jms-connector/1.7/_images/jms-publish-config-4.png)

Figure 3. Publish 操作の優先度の設定

XML エディターでは、​`<jms:publish>`​ および ​`priority`​ の設定は次のように記述されます。

```xml
<jms:publish priority="#[attributes.queryParams.priority]" destination="priorityQueue" config-ref="JMS_config"/>
```

### [](#存続期間の設定)存続期間の設定

パブリッシュされた各 JMS メッセージは、存続期間ヘッダーと共に送信されます。このヘッダーではメッセージをコンシュームできる期間が宣言され、この期間が過ぎるとメッセージの有効期限が切れます。操作で ​**\[Time to live (存続期間)\]**​ 項目と ​**\[Time to live unit (存続期間単位)\]**​ 項目を設定します。

1. Studio フローで、​**\[Publish\]**​ 操作を選択します。
2. **\[Destination (宛先)\]**​ 項目をキュー名 (​`vars.destination`​ など) に設定します。
3. **\[Publish Configuration (パブリッシュ設定)\]**​ セクションで、​**\[Time to live (存続期間)\]**​ 項目を ​`vars.timeToLive`​ に設定します。
4. **\[Time to live unit (存続期間単位)\]**​ 項目を ​**\[SECONDS (秒)\]**​ に設定します。

![「Publish」 設定画面で、「Time to live (存続期間)」 項目の値を設定し、「Time to live unit (存続期間単位)」 を 「SECONDS (秒)」 に設定する](/mulesoft/current/ja-jp/jms-connector/1.7/_images/jms-publish-config-5.png)

Figure 4. Publish 操作の存続期間の設定

XML エディターでは、​`timeToLive`​ および ​`timeToLiveUnit`​ の設定は次のように記述されます。

```xml
<jms:publish  timeToLive="#[vars.timeToLive]" timeToLiveUnit="SECONDS"
              destination="#[vars.destination]" config-ref="JMS_config"/>
```

JMS 2.0 仕様を使用している場合は、メッセージをコンシューマーが使用できるようになるまでの待機時間であるメッセージ配信遅延を制御することもできます。操作で ​**\[Delivery delay (配信遅延)\]**​ 項目と ​**\[Delivery delay unit (配信遅延単位)\]**​ 項目を設定します。

1. Studio フローで、​**\[Publish\]**​ 操作を選択します。
2. **\[Destination (宛先)\]**​ 項目をキュー名 (​`vars.destination`​ など) に設定します。
3. **\[Delivery delay (配信遅延)\]**​ 項目を ​`${msgInitialDelay}`​ に設定します。
4. **\[Delivery delay unit (配信遅延単位)\]**​ 項目を ​**\[MILLISECONDS (ミリ秒)\]**​ に設定します。

![「Publish」 設定画面で、「Delivery Delay (配信遅延)」 項目の値を設定し、「Delivery Delay Unit (配信遅延単位)」 項目を 「MILLISECONDS (ミリ秒)」 に設定する](/mulesoft/current/ja-jp/jms-connector/1.7/_images/jms-publish-config-6.png)

Figure 5. Publish 操作の配信遅延の設定

XML エディターでは、​`deliveryDelay`​ および ​`deliveryDelayUnit`​ の設定は次のように記述されます。

```xml
<jms:publish  deliveryDelay="${msgInitialDelay}" deliveryDelayUnit="MILLISECONDS"
              destination="#[vars.destination]" config-ref="JMS_config"/>
```

## [](#応答宛先の設定)応答宛先の設定

送信されたメッセージへの非同期応答が必要な場合、​**Publish**​ 操作を使用すると、​**\[Reply to (応答先)\]**​ 項目で任意の応答宛先を宣言できます。応答宛先は、JMS ヘッダーとしてメッセージのコンシューマーに渡されます。

次の例では、応答宛先を設定します。

1. Studio フローで、​**\[Publish\]**​ 操作を選択します。
2. **\[Destination (宛先)\]**​ 項目をキュー名 (​`vars.destination`​ など) に設定します。
3. **\[Reply to (応答先)\]**​ 項目を ​**\[Edit inline (インライン編集)\]**​ に設定します。
4. **\[Destination name (宛先名)\]**​ 項目を ​`${completionEventsDestination}`​ に設定します。
5. **\[Destination type (宛先種別)\]**​ 項目を ​**\[TOPIC (トピック)\]**​ に設定します。

![「\[Publish\] 設定画面で、\[Reply To (応答先)\] を \[Edit inline (インライン編集)\] に設定し、\[Destination name (宛先名)\] 項目の名前を設定し、\[Destination type (宛先種別)\] 項目を \[TOPIC (トピック)\] に設定する。」](_images/jms-publish-config-7.png)

Figure 6. Publish 操作の応答先の設定

XML エディターでは、​`<jms:reply-to>`​、​`destination`​、および ​`destinationType`​ の設定は次のように記述されます。

```xml
<jms:publish config-ref="JMS_config" destination="#[vars.invoiceProcessorDestination]">
    <jms:message>
        <jms:reply-to destination="${completionEventsDestination}" destinationType="TOPIC"/>
    </jms:message>
</jms:publish>
```

## [](#相関-id-の設定)相関 ID の設定

**Publish**​ 操作では、​**\[Correlation ID (相関 ID)\]**​ 項目で送信メッセージの相関 ID を設定できます。

まず、メッセージのパブリッシュ時に相関 ID を送信するかどうかを設定する必要があります。送信する場合、​**\[Send correlation id (相関 ID を送信)\]**​ 項目を次のいずれかのオプションに設定します。

- **ALWAYS**​  
    常にヘッダーを送信する
- **NEVER**​  
    ヘッダーを送信しない
- **AUTO**​  
    デフォルト値。アプリケーションの設定を使用する

次に、メッセージを送信するイベントの相関 ID を使用するか、メッセージビルダーで独自のカスタム相関 ID を設定できます。

1. Studio フローで、​**\[Publish\]**​ 操作を選択します。
2. **\[Destination (宛先)\]**​ 項目をキュー名 (​`attributes.headers.replyTo.destination`​ など) に設定します。
3. **\[Send correlation id (相関 ID を送信)\]**​ 項目を ​**\[ALWAYS (常時)\]**​ に設定します。
4. **\[Correlation ID (相関 ID)\]**​ 項目を ​`attributes.headers.correlationId`​ に設定します。

![「Publish」 設定画面で、「Send correlation ID (相関 ID を送信)」 項目を 「ALWAYS (常時)」 に設定し、「Correlation ID (相関 ID)」 項目をカスタム値に設定する](/mulesoft/current/ja-jp/jms-connector/1.7/_images/jms-publish-config-8.png)

Figure 7. Publish 操作の相関 ID の設定

XML エディターでは、​`endCorrelationId`​ および ​`correlationId`​ の設定は次のように記述されます。

```xml
<jms:publish config-ref="JMS_config" sendCorrelationId="ALWAYS" destination="#[attributes.headers.replyTo.destination]">
    <jms:message correlationId="#[attributes.headers.correlationId]"/>
</jms:publish>
```

## [](#メッセージプロパティの設定)メッセージプロパティの設定

JMS メッセージで各種プロパティを使用して、他のメッセージングシステムとの互換性の確立やカスタムメッセージセレクターの作成などを行うことができます。プロパティの一部はよく知られた JMS 標準プロパティですが、その他にも実装やカスタムユーザー設定に基づくプロパティがあります。​**Publish**​ 操作では、これらのプロパティをすべてメッセージ内で直接設定できます。

### [](#ユーザープロパティの設定)ユーザープロパティの設定

送信メッセージのプロパティを設定する必要がある場合、メッセージ内で ​**\[Properties (プロパティ)\]**​ 項目を設定し、DataWeave を使用してマップのインライン宣言を行います。

1. Studio フローで、​**\[Publish\]**​ 操作を選択します。
2. **\[Destination (宛先)\]**​ 項目をキュー名 (​`${bridgeDestination}`​ など) に設定します。
3. **\[Destination type (宛先種別)\]**​ 項目を ​**\[TOPIC (トピック)\]**​ に設定します。
4. **\[Body (本文)\]**​ 項目を ​`"bridged_" ++ payload`​ に設定します。
5. **\[Properties (プロパティ)\]**​ 項目を次の DataWeave コードに設定します。

```DataWeave
{
    AUTH_TYPE: 'jwt',
    AUTH_TOKEN: attributes.queryParams.token
}
```

![「Publish」 設定画面で、「Body (本文)」 項目と 「Properties (プロパティ)」 項目を設定する](/mulesoft/current/ja-jp/jms-connector/1.7/_images/jms-publish-config-9.png)

Figure 8. Publish 操作のプロパティの設定

XML エディターでは、​`<jms:body>`​ および ​`<jms:properties>`​ の設定は次のように記述されます。

```xml
<jms:publish config-ref="JMS_config" destination="${bridgeDestination}" destinationType="TOPIC">
    <jms:message>
        <jms:body>#["bridged_" ++ payload]</jms:body>
        <jms:properties>#[{
            AUTH_TYPE: 'jwt',
            AUTH_TOKEN: attributes.queryParams.token
        }]</jms:properties>
    </jms:message>
</jms:publish>
```

### [](#jmsx-プロパティの設定)JMSX プロパティの設定

JMS 仕様には JMSX プロパティが含まれます。このプロパティは、メッセージに関するメタデータが含まれるよく知られたプロパティセットです。次の例では、メッセージの ​**\[JMSX Properties (JMSX プロパティ)\]**​ 項目でこのプロパティを設定します。

1. Studio フローで、​**\[Publish\]**​ 操作を選択します。
2. **\[Destination (宛先)\]**​ 項目をキュー名 (​`${bridgeDestination}`​ など) に設定します。
3. **\[Destination type (宛先種別)\]**​ 項目を ​**\[TOPIC (トピック)\]**​ に設定します。
4. **\[Body (本文)\]**​ 項目を ​`"bridged_" ++ payload`​ に設定します。
5. **\[JMSX Properties (JMSX プロパティ)\]**​ 項目を ​**\[Edit inline (インライン編集)\]**​ に設定します。
6. **\[Jmsx group id (Jmsx グループ ID)\]**​ 項目を ​`vars.currentGroup`​ に設定します。
7. **\[Jmsx user id (Jmsx ユーザー ID)\]**​ 項目を ​`${username}`​ に設定します。

![「Publish」 設定画面で、「JMSX Properties (JMSX プロパティ)」 項目を 「Edit Inline (インライン編集)」 に設定し、「Jmsx group id (JMSX グループ ID)」 項目と 「Jmsx user id (JMSX ユーザー ID)」 項目を設定する](/mulesoft/current/ja-jp/jms-connector/1.7/_images/jms-publish-config-10.png)

Figure 9. Publish 操作の JMSX プロパティの設定

XML エディターでは、​`<jms:jmsx-properties>`​、​`jmsxGroupID`​、および ​`jmsxUserID`​ の設定は次のように記述されます。

```xml
<jms:publish config-ref="JMS_config" destination="${bridgeDestination}" destinationType="TOPIC">
    <jms:message>
        <jms:body>#["bridged_" ++ payload]</jms:body>
        <jms:jmsx-properties jmsxGroupID="#[vars.currentGroup]" jmsxUserID="${username}"/>
    </jms:message>
</jms:publish>
```

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

[メッセージのパブリッシュと応答のコンシューム](https://docs.mulesoft.com/jp/jms-connector/1.7/jms-publish-consume)