要求 (フレーム) B を送信して応答を受信すると同時に、前の要求 (A) に対する応答を既に待機している場合、B タスクで受信した応答は、実際には要求 A に対する応答です。
request A sent
request B sent
request B processed (quick)
response B sent
response B received (*)
...
request A processed (slow)
response A sent
response A received
単純なマッチングでは、ポイント (*) でマッチング リクエスト A--レスポンス B を取得します。
では、それらを同期させる方法は? つまり、リクエスト A をレスポンス A で終了させ、リクエスト B をレスポンス B で終了させたいと考えています。記録のために、私はディーラールーターソケットを使用しています。
Dictionary
送信された各リクエストにタスク完了トークンがバインドされたプール リクエスト ( ) を作成することを考えています。タスクはプールに新しいスロットを作成し、リクエストを送信して完了を待ちます。バックグラウンドでは、常に実行されているタスク (レシーバー) があります。これは単に応答を受信し、各応答を適切なスロットに配置し、指定されたタスク トークンを完了として設定します。私は正しい道を進んでいますか、それとも間違っていますか、それともすでに NetMQ に実装されていますか?