3

クライアント(株式、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つの別々のプロセス]の簡単な例を誰かが挙げることができますか?

4

2 に答える 2

3

ガイドのMajorDomoの例を見てください:http://zguide.zeromq.org/page:all#toc71

交換ごとにワーカープールを使用します。

于 2012-07-03T05:57:16.827 に答える
2

への対応:

ROUTER->ROUTER トポロジは正しいのですが、コードを動作させることができません

私の理解では、ZMQ ソケットは特定のパターンを有効にするためにペアで提供されます。

  1. ペア
  2. 要求/担当者
  3. パブ/サブ
  4. 押し引き

PAIR ソケット タイプのみが、PAIR タイプの別のソケットと通信でき、通常のソケットと同様に動作します。

他のすべてのソケット タイプには、通信用の補完的なソケット タイプがあります。たとえば、REQ ソケット タイプは REP ソケット タイプとしか通信できません。REQ ソケット タイプは REQ ソケット タイプと通信できません。

私の理解では、ROUTER/DEALER では、ROUTER は DEALER と通信できますが、ROUTER は ROUTER ソケット タイプと通信できません。

私の理解は間違っているかもしれませんが、例から、これは私がこれまでに理解したものです。

于 2012-06-24T17:54:26.027 に答える