---
schema_version: "1"
id: 68d4020afb17b08596d97a078c32439d860129c7bd568970e9ca5abe55b67fa4
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-ack.md
canonical_url: https://docs.mulesoft.com/jp/jms-connector/1.7/jms-ack
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 002e7554d97e13df7021747ab00d841e828d62b65497716d61db72fa34b2b555
description: MuleSoft Documentation Site
release: "1.7"
latest: false
---
# JMS Connector を使用したメッセージ肯定応答の設定

JMS 用 Anypoint Connector (JMS Connector) では、​**Ack**​、​**Consume**​、​**On New Message**​、および ​**Recovery session**​ 操作に応じて異なるメッセージ肯定応答モードを設定できます。

- 成功時の自動肯定応答
- 即時肯定応答
- 手動肯定応答

次の例は、各メッセージ肯定応答モードの設定方法を示しています。

## [](#成功時の自動肯定応答モードの設定)成功時の自動肯定応答モードの設定

成功時の自動肯定応答モードを設定するには、​**On New Message**​ ソースで ​**\[Acknowledge Mode (肯定応答モード)\]**​ 項目を次のいずれかのモードに設定します。

- **AUTO**​  
    フローの実行が正常に完了した場合のみ、受信したメッセージを自動的に肯定応答 (ACK) します。それ以外の場合、メッセージは肯定応答されず、再配信されます。
- **DUPS\_OK**​  
    **AUTO**​ モードと同様に、フローの実行が正常に完了した場合のみ、受信したメッセージを自動的に肯定応答 (ACK) しますが、ACK の実行前にメッセージが再配信されると、メッセージの重複が発生します。

次の例では、​**AUTO**​ 肯定応答モードを設定します。

1. Studio で、フローから ​**\[On New Message\]**​ ソースを選択します。
2. **\[On New Message\]**​ 設定画面の ​**\[Destination (宛先)\]**​ で、メッセージのコンシューム元である宛先の名前 (​`#[vars.destination]`​ など) を指定します。
3. **\[Acknowledge Mode (肯定応答モード)\]**​ メニューから、​**\[AUTO\]**​ を選択します。

![On New Message ソースの画面で \[Acknowledge Mode (肯定応答モード)\] 項目を \[AUTO\] に設定する](_images/jms-ack-auto.png)

Figure 1. JMS Connector の自動肯定応答モードの設定

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

```xml
<jms:listener  config-ref="JMS_Config" destination="#[vars.destination]" ackMode="AUTO"/>
```

## [](#即時肯定応答モードの設定)即時肯定応答モードの設定

即時肯定応答モードを設定するには、​**On New Message**​ ソースで ​**\[Acknowledge Mode (肯定応答モード)\]**​ 項目を使用するか、​**Consume**​ 操作で ​**\[Ack mode (肯定応答モード)\]**​ 項目を使用します。これらの項目を ​**\[IMMEDIATE\]**​ に設定します。このモードでは、メッセージがコンシュームされると、メッセージのアプリケーション処理に進む前にメッセージが自動的に肯定応答 (ACK) されます。  
メッセージを自動的に肯定応答すると、メッセージの処理中にエラーが発生してもメッセージが再配信されないため、「デッドレター」キューのようなアプリケーションロジックを使用して、メッセージを失わずにエラーを管理する必要があります。

次の例では、​**Consume**​ 操作の ​**IMMEDIATE**​ 肯定応答モードを設定します。

1. Studio で、フローから ​**\[Consume\]**​ 操作を選択します。
2. **\[Consume\]**​ 設定画面の ​**\[Destination (宛先)\]**​ で、メッセージのコンシューム元である宛先の名前 (​`#[vars.destination]`​ など) を指定します。
3. **\[Ack Mode (肯定応答モード)\]**​ メニューから、​**\[IMMEDIATE\]**​ を選択します。

![Consume 操作の画面で \[Ack Mode (肯定応答モード)\] 項目を \[IMMEDIATE\] に設定する](_images/jms-ack-immediate.png)

Figure 2. JMS Connector の即時肯定応答モードの設定

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

## [](#手動肯定応答モードの設定)手動肯定応答モードの設定

手動肯定応答モードを設定するには、​**On New Message**​ ソースで ​**\[Acknowledge Mode (肯定応答モード)\]**​ 項目を使用するか、​**Consume**​ 操作で ​**\[Ack mode (肯定応答モード)\]**​ 項目を使用します。これらの項目を ​**\[MANUAL\]**​ に設定します。このモードでは、メッセージ肯定応答 (ACK) を実行する責任をすべてアプリケーションロジックに委任します。

**On New Message**​ または ​**Consume**​ 操作で受信したすべてのメッセージの Mule メッセージ属性に、特定の接続でメッセージを一意に識別する肯定応答 ID が含まれます。  
メッセージを識別する肯定応答 ID は、次に ​**Ack**​ 操作の ​**\[Ack id (肯定応答 ID)\]**​ 項目に渡されます。

次の例では、​**Consume**​ 操作の ​**MANUAL**​ 肯定応答モードを設定します。

1. Studio で、フローから ​**\[Consume\]**​ 操作を選択します。
2. **\[Consume\]**​ 設定画面の ​**\[Destination (宛先)\]**​ で、メッセージのコンシューム元である宛先の名前 (​`openTickets`​ など) を指定します。
3. **\[Ack Mode (肯定応答モード)\]**​ メニューから、​**\[MANUAL\]**​ を選択します。
4. **\[Logger\]**​ コンポーネントを ​**\[Consume\]**​ 操作の右にドラッグします。
5. **\[Message (メッセージ)\]**​ 項目を ​`#[payload]`​ に設定します。
6. **\[Ack\]**​ 操作を ​**\[Logger\]**​ コンポーネントの右にドラッグします。
7. **\[Ack id (肯定応答 ID)\]**​ 項目を、回復するメッセージセッションの肯定応答 ID (​`#[attributes.ackId]`​ など) に設定します。

![Ack 操作の画面で \[Ack id (肯定応答 ID)\] 項目を、回復するメッセージセッションの肯定応答 ID に設定する](_images/jms-ack-operation.png)

Figure 3. JMS Connector の Ack 操作の設定

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

```xml
<flow name="consumerWithManualAck">
    <jms:consume config-ref="JMS_config" destination="openTickets" ackMode="MANUAL"/>

    <!--Do message processing-->
    <logger message="#[payload]">

    <jms:ack ackId="#[attributes.ackId]"/>
</flow>
```

### [](#手動セッション回復の設定)手動セッション回復の設定

手動肯定応答モードを使用すると、受信済みで肯定応答されていないすべてのメッセージはブローカーによって再配信されません。 メッセージ処理中にエラーが発生した場合、​**Recover session**​ 操作を使用して、セッションで再配信する必要があるすべてのメッセージを手動で回復する必要があります。セッションを回復するために使用する接続は、メッセージを受信するための接続と同じである必要があります。

次の例では、​**MANUAL**​ 肯定応答モードとセッションの回復方法を設定します。

1. Studio で、フローから ​**\[Consume\]**​ 操作を選択します。
2. **\[Consume\]**​ 設定画面の ​**\[Destination (宛先)\]**​ で、メッセージのコンシューム元である宛先の名前 (​`${destination}`​ など) を指定します。
3. **\[Ack mode (肯定応答モード)\]**​ 項目を ​**\[MANUAL\]**​ に設定します。
4. **\[Logger\]**​ コンポーネントを ​**\[Consume\]**​ 操作の右にドラッグします。
5. **\[Message (メッセージ)\]**​ 項目を ​`#[payload]`​ に設定します。
6. **\[Ack\]**​ 操作を ​**\[Logger\]**​ コンポーネントの右にドラッグします。
7. **\[Ack id (肯定応答 ID)\]**​ 項目を、回復するメッセージセッションの肯定応答 ID (​`#[vars.consumedMessage.attributes.ackId]`​ など) に設定します。
8. フローで小さな矢印をクリックして、​**\[Error handling (エラー処理)\]**​ セクションを展開します。
9. **\[On Error Propagate\]**​ コンポーネントを ​**\[Error handling (エラー処理)\]**​ セクションにドラッグします。
10. **\[Recover session\]**​ 操作を ​**\[On Error Propagate\]**​ コンポーネント内にドラッグします。
11. **\[Ack id (肯定応答 ID)\]**​ 項目を ​`#[vars.consumedMessage.attributes.ackId]`​ に設定します。

![Recover session 操作の画面で \[Ack id (肯定応答 ID)\] 項目を、回復するメッセージセッションの肯定応答 ID に設定する](_images/jms-ack-recover.png)

Figure 4. JMS Connector の Recover session 操作の設定

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

```xml
<flow name="consumerWithManualAck">
    <jms:consume config-ref="JMS_config" destination="${destination}"
                 ackMode="MANUAL" target="consumedMessage" targetValue="#[message]"/>

    <!--Do message processing-->
    <logger message="#[payload]">

    <jms:ack ackId="#[vars.consumedMessage.attributes.ackId]"/>

    <error-handler>
        <on-error-propagate>
            <!--In case of error, recover the session-->
            <jms:recover-session ackId="#[vars.consumedMessage.attributes.ackId]"/>
        </on-error-continue>
    </error-handler>
</flow>
```

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

- [トピックサブスクリプションの設定](https://docs.mulesoft.com/jp/jms-connector/1.7/jms-topic-subscription)
- [新規メッセージのリスン](https://docs.mulesoft.com/jp/jms-connector/1.7/jms-listener)