---
schema_version: "1"
id: 50fc53fc9cf64283aaa19dba64f63df8de94462da97c150346409fd8201e3039
title: メッセージのパブリッシュ方法
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/ibm-mq-connector/1.7/ibm-mq-publish.md
canonical_url: https://docs.mulesoft.com/jp/ibm-mq-connector/1.7/ibm-mq-publish
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 5773a376b1513ddcf9abe52da837d986d602449537ca50f3081b26f13aa0409e
description: MuleSoft Documentation Site
release: "1.7"
latest: true
---
# メッセージのパブリッシュ方法

この操作では、新しい JMS メッセージを作成して、指定した宛先 (キューまたはトピック) に送信できます。メッセージのコンテンツだけではなく、必要なヘッダーもすべて設定できます。

## [](#キューへのメッセージの送信)キューへのメッセージの送信

デフォルトでは、コネクタはペイロードに含まれるすべてのコンテンツをパブリッシュします。

```xml
<ibm-mq:publish destination="invoiceQueue" config-ref="IBM_MQ_config"/>
```

ペイロードの形式が正しくなく、変換が必要な場合はどうすればよいでしょうか。この場合は、​`publish`​ 操作の前に DataWeave トランスフォーマーを配置できますが、メッセージのペイロードが変更されるため、​`publish`​ に続く操作に影響が出ることがあります。

この不要な影響を回避するには、​`publish`​ 操作の内部にトランスフォーマーを配置します。

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

これで、トランスフォーマーによってパブリッシュされるコンテンツが生成される一方で、送信中のメッセージに対する副作用は発生しません。

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

`publish`​ 操作は、特定のトピックにメッセージをパブリッシュするためにも使用できます。 操作とメッセージの設定はすべて同じですが、​`destinationType`​ パラメーターで宛先を ​`TOPIC`​ として宣言する必要があります。

上記と同じ例で、メッセージをキューに送信するのではなくトピックにパブリッシュするには、次のように定義します。

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

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

各 JMS メッセージにはヘッダーがあり、メッセージの存続期間や優先度などのメタデータを渡すことができます。パブリッシュされるメッセージに関するメタデータは、​`publish`​ 操作のパラメーターで設定できます。

### [](#優先キューの実装)優先キューの実装

優先キューを実装するには、一部のメッセージに対して、デフォルト以外の優先度を割り当てる必要があります。これは、操作で ​`priority`​ パラメーターを使用して行います。

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

### [](#メッセージの存続期間の制御方法)メッセージの存続期間の制御方法

パブリッシュされるすべての JMS メッセージには、メッセージがコンシューム可能な状態を維持する存続期間を宣言した timeToLive ヘッダーがあり、この期間が過ぎるとメッセージは削除されます。​`publish`​ 操作の ​`timeToLive`​ パラメーターおよび ​`timeToLiveUnit`​ パラメーターにより、パブリッシュされる各メッセージの JMS ヘッダーの値を設定できます。

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

JMS 2.0 を使用している場合は、メッセージの ​`deliveryDelay`​ を設定することで、メッセージがコンシューマーに公開されるまでの待ち時間を設定できます。

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

## [](#応答宛先の宣言)応答宛先の宣言

送信するメッセージに対する非同期の応答が必要な場合は、JMS の ​`publish`​ 操作で任意の ​`reply-to`​ 宛先を宣言できます。 この宛先は、JMS ヘッダーでメッセージのコンシューマーに渡され、応答の送信先となります。

`reply-to`​ 宛先を宣言するには、次のようにメッセージの定義に追加します。

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

## [](#相関-id-の伝播)相関 ID の伝播

`publish`​ 操作では、送信メッセージの ​`correlationId`​ を設定できます。

最初に、​`sendCorrelationId`​ パラメーターを使用してメッセージをパブリッシュするときに ​`correlationId`​ を送信するかどうかを設定する必要があります。 このパラメーターは、​`ALWAYS`​ (常にヘッダーを送信する)、​`NEVER`​ (ヘッダーを送信しない)、または ​`AUTO`​ (デフォルト、アプリケーション設定を使用する) に設定できます。 次に、メッセージを送信するイベントの ​`correlationId`​ を使用するか、またはメッセージビルダーでカスタム ​`correlationId`​ を設定できます。

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

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

すべての JMS メッセージではプロパティを設定できます。プロパティには、他のメッセージングシステムとの互換性を指定したり、カスタムメッセージセレクターを作成したりと、いろいろな使い道があります。 プロパティの一部はよく知られた JMS 標準プロパティですが、その他にも実装やカスタムユーザー設定に依存するプロパティがあります。​`publish`​ 操作では、これらのプロパティをすべてメッセージ内で直接設定できます。

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

送信メッセージのプロパティを設定するのに必要な作業は、メッセージ内で ​`properties`​ 要素を使用して、DataWeave でマップのインライン宣言を行うだけです。

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

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

JMSX プロパティは、JMS 仕様で定義されているよく知られたプロパティセットで、メッセージに関するメタデータを指定します。これらのプロパティを設定するには、メッセージ要素の一部としてインラインで宣言します。

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

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

[応答のリスン方法](https://docs.mulesoft.com/jp/ibm-mq-connector/1.7/ibm-mq-publish-consume)