反復可能ストリームと反復不可能ストリーム

フローのパフォーマンスを最大限に引き出すには、ストリーミング戦略を理解して、自分のユースケースに最適な戦略を選ぶことが鍵となります。

  • 反復不可能ストリーム (ペイロードを 1 回だけ読み取る) または

  • 反復可能ストリーム (ペイロードを複数回読み取る)

反復不可能ストリーム

反復不可能戦略は、反復可能ストリームを無効化します。ユースケースでペイロードを 1 回しか読み取る必要がない場合は、コネクタで ​non-repeatable-stream​ パラメーターを使用してください。次の例を見てください。

<file:read path="exampleFile.json">
  <non-repeatable-stream />
</file:read>

反復可能ストリーム

ユースケースでペイロードを複数回、または並行して読み取る必要がある場合には、以下の戦略のいずれかを選択できます。

  • ファイルに格納されたストリーミング

  • メモリ内ストリーミング

ファイルに格納された反復可能ストリーム

ファイルに格納された反復可能ストリーム戦略を使用する場合は、バッファサイズ ​inMemorySize​ を自分のユースケースに合わせてカスタマイズすることで、パフォーマンスを最適化します。

  • バッファサイズを大きくすると、Mule がバッファをディスクに書き込む回数を減らせます。これによってパフォーマンスが高まりますが、より多くのメモリが必要になるため、アプリケーションが処理できる同時要求数が制限されます。

  • バッファサイズを小さくすると、メモリの負荷は低減しますが、応答時間が長くなります。

次の例では、サイズが約 1 MB であるファイル用に、ファイルに格納された反復可能ストリームのバッファサイズを設定しています。

<file:read path="bigFile.json">
  <repeatable-file-store-stream
    inMemorySize="1"
    bufferUnit="MB"/>
</file:read>

ユースケースで最適なバッファサイズは、必ずパフォーマンステストを実施して決めてください。

メモリ内の反復可能ストリーム

メモリ内の反復可能ストリーム戦略を使用する場合は、ファイルサイズの大小に合わせて以下を設定することでバッファサイズを設定します。

  • initialBufferSize
    初期サイズ

  • bufferSizeIncrement
    バッファを増やすレート。

  • maxInMemorySize
    最大バッファサイズ。

  • bufferUnit
    バッファサイズ値の測定単位。

ペイロードのサイズと予想される同時実行数に基づいて、メモリ内のバッファサイズを調整します (デフォルトは 512KB)。

次の例では、メモリ内の反復可能ストリームの初期バッファサイズを 512 KB、拡張単位を 256 KB、そしてメモリに読み込めるコンテンツの最大サイズを 2000 KB (2 MB) に設定しています。

<file:read path="exampleFile.json">
  <repeatable-in-memory-stream
    initialBufferSize="512"
    bufferSizeIncrement="256"
    maxInMemorySize="2000"
    bufferUnit="KB"/>
</file:read>

ユースケースで最適なバッファサイズは、必ずパフォーマンステストを実施して決めてください。