クライアント(株式、FX、その他)の注文を適切な取引所にルーティングする注文マネージャーを作成する必要があります。クライアントは注文を送信したいのですが、FIXやその他の独自のプロトコルについては何も知らず、注文を送信するための内部(正規化された)形式しか知りません。それぞれがFIX/Binary/etc接続を介して各FIX/etcプロバイダーに接続するアプリケーション(サーバー)があります。クライアントとサーバーの間に、正規化された順序を取り、それを特定のFIX / etcプロバイダーに対して適切な形式に変換し、サーバーからメッセージを受け取り、クライアントに対して正規化された形式に戻すブローカープログラムが必要です。 。クライアントがルートを指定することは問題ありませんが、クライアントとサーバーの間でその順序に関するメッセージをやり取りするのは、クライアントとサーバーの間のブローカープログラム次第です。だからどういうわけか出力[は、
ZMQトポロジを調査しましたが、サーバーが同一ではないため、REQ-> ROUTER-> DEALERが機能しません[コードは機能します-つまり、トポロジが間違っています]。
//This topology doesn't work because the servers are not identical
#include "zhelpers.hpp"
int main (int argc, char *argv[])
{
// Prepare our context and sockets
zmq::context_t context(1);
zmq::socket_t frontend (context, ZMQ_ROUTER);
zmq::socket_t backend (context, ZMQ_DEALER); // ZMQ_ROUTER here? Can't get it to work
frontend.bind("tcp://*:5559");
backend.bind("tcp://*:5560");
// Start built-in device
zmq::device (ZMQ_QUEUE, frontend, backend);
return 0;
}
代わりにROUTER->ROUTERトポロジが正しいと思いましたが、コードを機能させることができません。クライアントは注文を送信しますが、応答を返さないため、何か間違ったことをしている必要があります。ZMQ_IDENTITYを使用するのが正しいことだと思いましたが、これを機能させることができないだけでなく、ZMQがZMQ_IDENTITYから離れつつあるように見えますか?
これを行う正しい方法を示す3つのZMQプログラム[別々のスレッドではなく、3つの別々のプロセス]の簡単な例を誰かが挙げることができますか?