2017-09-21 11 views
0

スカラでデータ構造を実装したいのですが、私のプログラムで行われている作業を重複排除することができます。このプログラムはakka-scalaフレームワーク上に構築されています。スカラーのデータ構造がakkaによって行われた重複除外

私のワーカーにメッセージを受け取るたびに、現在処理中のものについてこのデータ構造をチェックします。そのようなメッセージタイプがすでに処理中であれば、そのデータ構造に格納し、処理結果を待つだけです。処理された結果が到着したら、このタイプのすべての格納されたメッセージに対してACKを送信し、それを構造体から削除します。

このメッセージタイプがこのデータ構造内に見つからない場合は、これまでのところ、私はmutable.Map[Long, Seq[ETLMessageMeta]]

ような何かを考える

は、このようなタスクのためのより良いものはありますか?

答えて

1

各作業単位が一意に識別可能な場合は、Mapが適切に聞こえます。ただし、mutable.Mapを使用する代わりに、varimmutable.Mapを使用して、この変更可能な状態が作業者の外部に漏れないようにします。例:

class Worker extends Actor { 
    var inProgress = immutable.Map[Long, Seq[ETLMessageMeta]]() 

    def receive = ??? 
} 
関連する問題