...または切断するクライアントとzmqはどのように対処しますか?クライアントが接続を切断してもメッセージを受信できるキューのタイムアウトはありますか?RabbitMQの "x-expires"引数のZeroMQ eqivillentは何ですか?
2
A
答えて
2
参照:http://api.zeromq.org/2-1:zmq-setsockopt
ZMQソケットが最高水準の概念を持っています。ドキュメントから
:zmqソケットのタイプごとに
The high water mark is a hard limit on the maximum number of outstanding messages ØMQ shall
queue in memory for any single peer that the specified socket is communicating with.
If this limit has been reached the socket shall enter an exceptional state and depending on
the socket type, ØMQ shall take appropriate action such as blocking or dropping sent messages.
(REQ、REP、PUB、SUBなど)あなたはそれの行動上の文書を確認することができます - それはブロックがメッセージの送信またはそれらをドロップします。
ほとんどの場合、クライアントの接続が切断されると、メッセージが破棄されます。それが重要な場合は、ZMQパターンの上にメッセージの永続性と信頼性を構築する必要があります。
1
あなたが使用できる戦略はいくつかあり、ニーズに応じています(誰にも答えられません)。
一般に、クライアントが切断すると、サーバー側のキューが削除されます。これはPUBからSUBへのフロー、PUSHからPULLへのフローに当てはまります。
接続を頻繁に処理する場合は、ROUTER-DEALERを使用して、接続(接続する前にDEALER側)でIDを設定します。それからROUTERは、それがなくなって戻ってきても、ディーラーのメッセージを待ち行列に入れます。その後、HWMを使用してそのキューのサイズを制限できます。
タイムアウトが必要な場合、ZeroMQはメッセージを永遠に保存するか、キューに入れられない場合にすぐにメッセージをドロップするので、ややこしいことです。サーバーの独自のリスト構造にメッセージをキューイングし、HWMを1に設定し、ノンブロッキング送信を使用してそれらのスペースが空いている状態でキューからそれらをプッシュする必要があります。その後、クライアントを期限切れにして、それらに関連付けられたキューを削除することができます。仕事のように聞こえるが、かなりシンプルだ。
関連する問題
- 1. ZeroMQとは何ですか?
- 2. zeromqの使用例は何ですか?
- 3. 親の引数は何ですか?
- 4. NSOperationの引数は何倍ですか?
- 5. sbtのコマンドライン引数は何ですか?
- 6. RabbitMQクラスタリングとは何ですか?
- 7. "struct file_operations"引数は何ですか?
- 8. survfit.coxph:newdata引数は何ですか?
- 9. 関数の引数にあるPHPのフラグは何ですか?
- 10. Clojure:関数の引数リストで[_]は何をしますか?
- 11. 引数は何のインスタンス変数ですか?
- 12. RabbitMQの典型的なバージョン管理戦略は何ですか?
- 13. ZeroMQ - 複数のパブリッシャーとリスナー
- 14. RabbitMQ、ZeroMQ、Service Brokerなどの高可用性データベースWebサービスを作成するのに適したソリューションですか?
- 15. rubyのCSV.open()の2番目のパラメータ/引数は何ですか?
- 16. KombuとRabbitmqとのAMQP取引
- 17. powershellのパラメータと引数の違いは何ですか?
- 18. Webbyの@ pages.find()の引数/オプションは何ですか?
- 19. mysqlの-u引数の目的は何ですか?
- 20. setsockoptのoption_len引数の目的は何ですか?
- 21. Common Lispの "functorの不正な引数"とは何ですか?
- 22. PerlのIO :: Pipeコンストラクタの引数は何ですか?
- 23. longをフォーマットするprintfの引数は何ですか?
- 24. 最新の/最も安定したZeroMQ C#のバージョンは何ですか?
- 25. protobuf-net SerializeWithLengthPrefixタグの引数は何ですか?
- 26. Object.createの列挙可能な引数は何ですか?
- 27. socket.io socket.setとsocket.get - のコールバック引数は何ですか?
- 28. 名前付き引数のルールとは何ですか?
- 29. chrome拡張子引数の使用は何ですか:tabld?
- 30. enumerateObjectsUsingBlockのBOOL * stop引数は何ですか?