2017-02-28 7 views
1

私は、メッセージを処理してその結果を非同期API(ReactiveMongo)で保存しています。 IEが計算を完了すると、俳優はReactiveMongoに計算結果を保存するよう要求しており、その呼び出しはブロックされていません。メールボックスからメッセージを読み取っているAkkaアクターを一時停止する方法

最後のReactiveMongoリクエスト機能が完了するまで、次のメッセージの処理を停止するにはどうすればよいですか?また、メールボックスは着信メッセージを受信できる必要があります。

+0

ReactiveMongoはリクエスト機能が完了したかどうかを確認するためのAPIを提供していますか? –

+0

はい、挿入コールは直ちにFeature [WriteResult]を返します。基本的には、feature.oncompleteにリスナーを追加することができます。解決する必要がある場合は、アクターをアクティブにするために何かを呼び出す必要があります。これは1つの質問です。また、インサートコール後にアクタを止める方法についてのもう一つの質問です。 –

答えて

2

は解決

シンプルで間違った答えをブロック:あなただけ(あなたが使用しない言語でまたは任意の類似の方法)待つを呼び出して、俳優を遮断することによってこれを行うことができます。

俳優の中でブロックしないでください。

ソリューションをブロックしていない

マスター\ワーカーパターンは、この問題のために良いです:http://letitcrash.com/post/29044669086/balancing-workload-across-nodes-with-akka-2

だからあなたワーカー俳優がReactiveMongo要求機能の完了後に「作業完了」メッセージを送信します。その後、マスター俳優は、新しい "この作業を行う"というメッセージを作業者に送信します。

+0

ありがとう、マスターから仕事を引っ張っている労働者は、今朝設計した仕事よりもはるかに優れています。 –

関連する問題