2016-07-01 11 views
1

SelectConnectionを使用してコンシューマを書きたいとします。SelectConnectionによる遅延メッセージの消費

ネットワークインフラストラクチャには、一定時間後に接続を閉じるデバイスが複数あるため、ハートビート機能を使用します。

私が知る限り、IOLoopはメインスレッド上で動作します。したがって、このスレッドがメッセージを処理している間、ハートビートフレームは処理できません。

私の考えは、メインスレッドがIOLoopを処理できるようにメッセージを処理する複数のワーカースレッドを作成することです。メッセージの処理には多くのリソースが必要です。そのため、一度に一定量のメッセージのみを処理する必要があります。残りのメッセージをクライアント側に格納する代わりに、キューに残したいと思います。

ハートビートを中断することなく、メッセージの消費を中断する方法はありますか?

答えて

0

私はpikaのSelectConnectionの専門家ではありませんが、Consumer Prefetch (QoS)を必要な数のプロセスに設定することでこれを実装できます。

これは基本的には、メッセージが入ったら、プロセスまたはスレッドにオフロードします。メッセージが処理されると、メッセージが処理されたことを確認します。

例として、QoSを10に設定すると、クライアントは最大10個のメッセージをプルし、少なくとも1つが確認応答されるまで新しいメッセージをプルしません。

ここで重要な部分は、メッセージの処理が完了した後にのみメッセージを確認する必要があることです。

関連する問題