1

私のAkkaFSMアクターは、タイプに応じてメッセージに優先順位を付ける必要があります。具体的には、アクターは次のいずれかのカテゴリのメッセージを優先順位に従って受信します。

  1. 状態遷移をトリガーするメッセージ
  2. 現在の状態を照会するメッセージ
  3. アクターに何らかの作業を実行させるメッセージ( "WorkMsg")

Akkaのドキュメントによると、PriorityGeneratorを含むPriorityExecutorBasedEventDrivenDispatcherを使用して、上記のリストに従ってメッセージに優先順位を付けることができます。このディスパッチャーを使用してFSMアクターを実装しましたが、うまく機能します。

問題は、このディスパッチャがWorkMsgsも並べ替えることですが、これは私が望んでいることではありません。

WorkMsgsにはタイムスタンプが含まれており、このタイムスタンプでソートされたFSMアクターに送信されます。FSMアクターがWorkMsgsを処理するとき、以前のWorkMsgよりも古いWorkMsgsを破棄します。したがって、これらを並べ替えると、データが失われます。

PriorityExecutorBasedEventDrivenDispatcherがないと、WorkMsgsは並べ替えられませんが、上記のリストの優先順位は満たされません。

同じ優先度のメッセージの並べ替えを防ぎながら、上記のリストの優先度を維持するにはどうすればよいですか?

4

1 に答える 1

2

優先プロキシアクターは、ワーカーアクターに送信されるメッセージに優先順位を付けることができます。受信メッセージを並べ替えて保存し、優先順位付けロジックを実装する必要があります。ワーカーはさらに、各メッセージの後にプロキシに応答して、さらに作業の準備ができていることを通知する必要があります。

于 2011-12-02T11:03:04.197 に答える