2

クライアントからサーバーにデータを送信したい。サーバーにとって重要なのは最後のメッセージだけです。サーバーが障害の後に起動した場合、サーバーがクライアントから最後のメッセージを取得するだけにしたい。

サーバーがダウンしている間、クライアントが処理を続けてメッセージを送信するか、少なくともそれらをキューに入れます(1つのメッセージの長さで)。

これには NetMQ/ZeroMQ を使用しようとしています。どうすればそれができますか?

ありがとう!

4

1 に答える 1

3

最初に、クライアントがパブリッシャーである PubSub を使用します。PubSub を使用すると、オンラインのときにのみメッセージを取得できます。サブスクライバー (サーバーの場合はサーバー) がダウンしている場合は、すべてのメッセージ (ラジオなど) を見逃していました。

ZeroMQ には Conflate という機能もあります (NetMQ にはまだありません。移植する必要があるかもしれません)。次の質問を見てください。

ZeroMQ: Publish–Subscribe で古いメッセージを削除して新しいメッセージを優先させたい

また、ZeroMQ ドキュメントからの conflate の説明:

ZMQ_CONFLATE: 最後のメッセージのみを保持 設定されている場合、ソケットはインバウンド/アウトバウンド キューに 1 つのメッセージのみを保持します。このメッセージは、受信した最後のメッセージ/送信する最後のメッセージです。「ZMQ_RCVHWM」および「ZMQ_SNDHWM」オプションを無視します。マルチパート メッセージをサポートしません。特に、その一部のみがソケットの内部キューに保持されます。

于 2015-05-22T13:44:51.100 に答える