Mule 4 の概要: 実行エンジンのスレッドと同時実行

このバージョンの Mule は、拡張サポートが終了する 2023 年 5 月 2 日にその すべてのサポート​が終了しました。

このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。

標準サポートが適用されている最新バージョンの Mule 4 にアップグレード​することをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。

Mule 4 では実行エンジンが改良され、Mule アプリケーションを簡単に開発および拡張できるようになりました。根幹的なエンジンは、非ブロック型のリアクティブアーキテクチャに基づきます。このタスク指向の実行モデルでは、非ブロック IO コールを活用して、処理方式の不適切な設定に起因するパフォーマンスの問題を回避できます。

開発面では、いくつかの大きな変更が行われています。

  • エクスチェンジパターンが廃止されました。どのコネクタも応答を受信します。メッセージを非同期処理する場合は、非同期コンポーネントを使用します。

  • どのフローでも常に非ブロック処理方式が使用されるため、今後は処理方式を設定する必要がありません。

  • 3 つの主要なスレッドプール (CPU Light (CPU 負荷小)、CPU Intensive (CPU 負荷大)、IO) があり、これらは同じ Mule インスタンス内のすべてのアプリケーションで共有されています。

同時実行の制御

Mule 4 では、スレッド設定が同時実行管理から切り離されています。フロー上、または同時実行をサポートするコンポーネント上の同時実行を制御するには、​maxConcurrency​ 属性を使用して、そのコンポーネントが任意の時点で受信できる同時呼び出し数を設定します。

<flow maxConcurrency=“1”>
  <http:listener>
  <scatter-gather maxConcurrency=“3”>
    <route/>
    <route/>
  </scatter-gather>
</flow>

スレッドプールとアプリケーションの調整

コンポーネントの処理種別に基づき Mule はそのコンポーネントをその種別の処理専用に調整したスレッドプールで実行します。これらのスレッドプールは Mule によって管理され、同じ Mule インスタンス内のすべてのアプリケーションで共有されます。 Mule は、起動時にシステム内で使用可能なリソース (メモリや CPU コアなど) を調査し、実行中の環境に合わせてスレッドプールを自動的に調整します。デフォルト設定は、パフォーマンステストによって確立されたもので、ほとんどの状況で最適な値になっています。

Mule イベントプロセッサーは、CPU Intensive (CPU 負荷大)、CPU Light (CPU 負荷小)、IO Intensive (IO 負荷大) のいずれの操作を行うかを Mule に示します。これらのワークロード種別によって、Mule はさまざまなワークロードを調整することができ、最適なパフォーマンスを実現するためにユーザーがスレッドプールを手動で管理する必要がなくなります。Mule は、システム内で使用可能なリソース (メモリや CPU コアなど) を調査し、スレッドプールを自動的に調整します。

異なるスレッドプールを使用することで Mule のリソース管理効率が向上し、同じ量のワークロードを処理するために必要なスレッド数 (およびそれに伴うメモリフットプリント) が大幅に削減されます。

実行エンジンのしくみおよび実行エンジンに対して指定可能な設定についての詳細は、​「実行エンジン」​を参照してください。