【问题标题】:RIght ZeroMQ topology正确的 ZeroMQ 拓扑
【发布时间】:2012-07-03 13:57:16
【问题描述】:

我需要编写一个订单管理器,将客户(股票、外汇等)订单路由到适当的交易所。客户想要发送订单,但对 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?

有人可以举一个简单的例子,说明三个 ZMQ 程序 [不在单独的线程中,三个单独的进程中] 显示正确的方法吗?

【问题讨论】:

    标签: zeromq


    【解决方案1】:

    查看指南中的 MajorDomo 示例:http://zguide.zeromq.org/page:all#toc71

    您将在每个交易所使用一个工作池。

    【讨论】:

    • Pieter,谢谢你,这正是我所需要的。是否有 C++ 中的示例程序,具有简单的客户端、服务器和设备,就像本指南其余部分对其他拓扑的方式一样?
    • 我找到了:zguide.zeromq.org/…
    • 请注意,MDP 是为每个请求一个响应而设计的。似乎您需要为一个请求发回多个回复。这更复杂,但对您正在使用的协议和 MDP 实现应该仍然是一个相当适度的更改。
    • Pieter 有什么方法可以让我离线直接联系您吗?
    【解决方案2】:

    回应:

    ROUTER->ROUTER 拓扑是正确的,但我无法让代码工作

    我的理解是 ZMQ Sockets 成对出现以启用某种模式。

    1. 请求/请求
    2. PUB/SUB
    3. 推/拉

    只有 PAIR 套接字类型可以与另一个 PAIR 类型的套接字通信并且行为类似于您的普通套接字。

    对于所有其他套接字类型,有一个用于通信的免费套接字类型。例如 REQ 套接字类型只能与 REP 套接字类型对话。 REQ 套接字类型不能与 REQ 套接字类型对话。

    我的理解是在 ROUTER/DEALER 中,ROUTER 可以和 DEALER 通信,但 ROUTER 不能和 ROUTER 套接字类型通信。

    我的理解可能是错误的,但从这些例子中,这是我目前所理解的。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2011-03-29
    相关资源
    最近更新 更多