1

現在、Akka で受信したメッセージに対して API メソッドを呼び出すシステムを実装しています。これは非常に簡単で、Akka に関する深い知識は必要ありません。

ただし、実際の API では、バッチ リクエストを作成することもできます (ここで説明されている JSON-RPC バッチ コールのようなもの: http://www.jsonrpc.org/specification )。メソッドの戻り値は変わりませんが、キューイングは変わります。

私のアイデアは、キューに複数のメッセージがあるかどうかを確認し、何百もの個別のメッセージを作成するのではなく、1 つの API 呼び出しで一度にすべて処理することです (もちろん、それらすべてに個別に返信するという考えで)。

それはAkkaで可能ですか?

4

1 に答える 1

2

そのような組み込み構造はありません。できることは、処理アクターの前にバッチ処理アクターを配置することです。バッチ アクターが新しい応答を受け取ると、バッチの作成を開始します。

プロセッサ アクターは、次のバッチを処理する準備ができたら、バッチ処理アクターに問い合わせることができます。この時点で、バッチ アクターは、これまでに収集したすべてのメッセージを 1 つのメッセージで送信します。

もちろん、実際のパターンは、API がいつ、どのように呼び出されるかによって多少異なります。

ただし、このようなパターンの構築を開始する前に、実際にパフォーマンスを測定する必要があります。私は個人的に、アクターが大きなチャンクよりもきめの細かい作業を行うことを好みます。1 回の受信アクションで多くの作業を行うと、公平性が低下する可能性があります。

潜在的に (必ずしもそうではありませんが) スループットが高くなる可能性があるため、公平性を低下させて生活できる場合は、デフォルトのディスパッチャーの「スループット」設定を調べる必要があります。

# Throughput defines the maximum number of messages to be
# processed per actor before the thread jumps to the next actor.
# Set to 1 for as fair as possible.
于 2013-02-22T13:56:27.927 に答える