---
schema_version: "1"
id: 7cf9ec8e7a306c7f4e841301689e37a28ac17f27e3e845fb9a6ae86a3dc86359
title: Until Successful の移行
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-runtime/4.8/migration-core-until-successful.md
canonical_url: https://docs.mulesoft.com/jp/mule-runtime/4.8/migration-core-until-successful
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 989f1c51867ec5db2cd1a1abd2b4eb332cd3f5f57ea657d56a9af20314dcbbf5
description: MuleSoft Documentation Site
release: "4.8"
latest: false
---
# Until Successful の移行

Mule 4 の Until Successful コンポーネントでは、一部のプロセスの処理方法が Mule 3 の場合と異なります。これらの変更に関連する一部の要素と属性は、Mule 4 には存在しません。Mule 4 では、異なる属性やコンポーネントを使用して同じ機能を実行できるか、Mule 4 でその機能を設定する必要がなくなったかのいずれかです。

Until Successful コンポーネントの手動移行では、以下の変更を行います。

- `<processor-chain/>`​ 要素をすべて削除する。
- `secondsBetweenRetries`​ 属性を ​`millisBetweenRetries`​ に置き換える。
- `failureExpression`​ を削除し、代わりに Mule 4 の検証プロセッサーを使用する。
- `deadLetterQueue-ref`​ 属性を Mule 4 のエラーハンドラーに置き換える。
- `<threading-profile/>`​ 要素をすべて削除する。
- `ackExpression`​ 属性を削除し、代わりに Set Payload コンポーネントを使用する。
- `synchronous`​ 属性をすべて削除する。

以下の各セクションで、これらの変更について説明します。

## [](#mule-4-で使用されなくなったプロセッサーチェーン)Mule 4 で使用されなくなったプロセッサーチェーン

Mule 3 では、Until Successful スコープの内側で複数のプロセッサーを実行するには、プロセッサーチェーン (​`<processor-chain/>`​) の内側にプロセッサーをラップする必要がありました。Mule 4 の Until Successful では複数のプロセッサーがサポートされ、プロセッサーチェーンは必要ありません。

Mule 3:

```xml
<flow name="untilFlow">
  <until-successful>
    <processor-chain>
      <logger message="#[1]"/>
      <logger message="#[2]"/>
    </processor-chain>
  </until-successful>
</flow>
```

Mule 4 の例には、​`<processor-chain/>`​ 要素がありません。

Mule 4:

```xml
<flow name="untilFlow">
  <until-successful>
    <logger message="#[1]"/>
    <logger message="#[2]"/>
  </until-successful>
</flow>
```

## [](#mule-4-で変更された再試行属性)Mule 4 で変更された再試行属性

Mule 3 の ​`secondsBetweenRetries`​ 属性は Mule 4 から削除されました。Mule 4 では ​`millisBetweenRetries`​ 属性を使用できます。

Mule 3:

```xml
<flow name="untilFlow">
  <until-successful secondsBetweenRetries="10">
    <logger message="#[1]"/>
  </until-successful>
</flow>
```

Mule 4 の例では、​`secondsBetweenRetries="10"`​ が ​`millisBetweenRetries="10000"`​ に置き換わっています。

Mule 4:

```xml
<flow name="untilFlow">
  <until-successful millisBetweenRetries="10000">
    <logger message="#[1]"/>
    <logger message="#[2]"/>
  </until-successful>
</flow>
```

## [](#変更が必要な失敗式)変更が必要な失敗式

`failureExpression`​ 属性は削除されました。検証式を設定する検証プロセッサーに置き換えることができます。

Mule 3:

```xml
<flow name="untilFlow">
  <until-successful failureExpression="#[regex:(?i).*error]">
    <logger message="#[1]"/>
  </until-successful>
</flow>
```

Mule 3 の例にある ​`failureExpression`​ 設定は、Mule 4 では ​`<validation:is-false/>`​ 設定に置き換わります。

Mule 4:

```xml
<flow name="untilFlow">
  <until-successful>
    <logger message="#[1]"/>
    <validation:is-false expression="#[regex:(?i).*error]"/>
  </until-successful>
</flow>
```

## [](#mule-4-のエラーハンドラーを使用したデッドレターキューの参照)Mule 4 のエラーハンドラーを使用したデッドレターキューの参照

Mule 3 の ​`deadLetterQueue-ref`​ 属性では、すべての再試行が失敗したら、配信不能メッセージをエンドポイントまたはプロセッサーに送信できます。Mule 4 では、代わりにエラーハンドラーを使用して、すべての ​`RETRY_EXHAUSTED`​ 例外をキャッチし、メッセージをそのエンドポイントまたはプロセッサーに送信できます。

Mule 3:

```xml
<vm:endpoint name="dlqChannel" path="dlq" />

<flow name="untilFlow">
  <until-successful deadLetterQueue-ref="dlqChannel">
    <logger message="#[1]"/>
  </until-successful>
</flow>
```

Mule 4 の例では、エラーハンドラー ​`<error-handler/>`​ 内の On Error Propagate (エラー時に伝搬) ​`<on-error-propagate/>`​ 要素を使用して ​`dlqChannel`​ を参照します。

Mule 4:

```xml
<vm:endpoint name="dlqChannel" path="dlq" />

<flow name="untilFlow">
  <until-successful>
    <logger message="#[1]"/>
  </until-successful>
  <error-handler>
    <on-error-propagate type="RETRY_EXHAUSTED">
      <outbound-endpoint ref="dlqChannel"/>
    </on-error-propagate>
  </error-handler>
</flow>
```

## [](#mule-4-で不要になり削除されたスレッドプロファイル)Mule 4 で不要になり削除されたスレッドプロファイル

Mule 3 では、​`<threading-profile/>`​ 子要素を使用して、実行スレッドを調整できます。Mule 4 では、実行エンジンでいくつかの変更が行われました。 Mule 4 では非ブロックアーキテクチャとの関連付けにより、スレッドを手動で調整する必要がなくなりました。

Mule 3:

```xml
<flow name="untilFlow">
  <until-successful>
    <threading-profile maxThreadsActive="45" maxThreadsIdle="5" threadTTL="52"  threadWaitTimeout="60"/>
    <logger message="#[1]"/>
  </until-successful>
</flow>
```

Mule 4 の例では、​`<threading-profile/>`​ 要素を削除します。

Mule 4:

```xml
<flow name="untilFlow">
  <until-successful>
    <logger message="#[1]"/>
  </until-successful>
</flow>
```

## [](#削除された-ackexpression-属性と-set-payload-の使用)削除された ackExpression 属性と Set Payload の使用

Mule 3 の ​`ackExpression`​ 属性は、応答ペイロードの同期生成を設定します。この属性は Mule 4 には存在しません。アプリケーションでこの動作を実行するには、Until Successful の後に Set Payload コンポーネントを設定できます。

Mule 3:

```xml
<flow name="untilFlow">
  <until-successful ackExpression="#[message:correlationId]">
    <logger message="#[1]"/>
  </until-successful>
</flow>
```

Mule 4 の例では、Set Payload ​`<set-payload/>`​ コンポーネントを使用して ​`#[message:correlationId]`​ 値を設定します。

Mule 4:

```xml
<flow name="untilFlow">
  <until-successful>
    <logger message="#[1]"/>
  </until-successful>
  <set-payload value="#[message:correlationId]"/>
</flow>
```

## [](#不要になり削除された同期属性)不要になり削除された同期属性

`synchronous`​ 属性は不要になったため削除されました。Mule 4 では、実行エンジンでいくつかの変更が行われました。非ブロックアーキテクチャでは不要になりました。

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

- [Mule 4 の概要: 実行エンジンのスレッドと同時実行](https://docs.mulesoft.com/jp/mule-runtime/4.8/intro-engine)​。
- [実行エンジン](https://docs.mulesoft.com/jp/mule-runtime/4.8/execution-engine)
- [Until Successful スコープ](https://docs.mulesoft.com/jp/mule-runtime/4.8/until-successful-scope)