【问题标题】:FIX communication model - messaging or socketFIX 通信模型 - 消息传递或套接字
【发布时间】:2010-10-11 10:18:58
【问题描述】:

我的情况是:一个c++程序需要和一个使用FIX协议的Java程序对话。

我的解决方案: - 消息传递:C++ 程序以 FIX 格式发布文本,Java 程序可以使用该文本并使用 quickfix/j 进行解析。 - Socket:在Java程序中设置一个FIX服务器,然后作为客户端的C++程序可以连接到这个socket并使用quickfix将字节流写入其中。 Java 程序使用 quickfix/j 来解析字节流。

我的问题: 1、socket方案是否存在兼容性问题,即用quickfix编码的字节流可以用quickfix/j完全解码? 2. 哪个更好?缺点和优点。

提前致谢。

【问题讨论】:

标签: java c++ quickfix


【解决方案1】:

FIX 消息传递将是一个更简单的解决方案,而不是实现套接字。 quickfix 库中已经嵌入了套接字通信。除非您正在做一些非常不同的事情,否则重新实现是没有用的。该引擎旨在破译 FIX 消息。如果您想修改库的任何套接字通信,您可以更改库本身。反正你有源代码。

如果您尝试实现套接字,则可能必须围绕套接字编写包装器,以解析从 C++ 到 Java 的消息,反之亦然。

您拥有 C++ 版本的 quickfix 库。使用它作为启动器将 FIX 消息发送到 Java 接受器。您可能不必担心编写 C++ 服务器以在字节流中发送 FIX 消息。让底层库而不是你自己来做通信的工作。

【讨论】:

  • 非常感谢您的回复。我也更喜欢 FIX 消息传递。现在c++程序发送一个TextMessage到一个队列,Java程序从队列中消费消息,使用这个文本消息构造一个Message。这是正确的解决方案吗?
  • 如果您不想使用 C++ quickfix 库,那很好。您的队列是为多线程设计的吗? Quickfix 负责处理多个会话同时跨消息发送。排队可能需要一些时间才能发送消息,FIX 转换很慢,所以如果您不担心延迟,使用队列可能不是问题。发送 TextMessage 然后进行转换是一个 2 步过程。获取您的数据并在第一时间创建一条 FIX 消息会快得多,因为您的最终目标是仅创建一条 FIX 消息。
  • 我的队列是为多线程设计的,我们在 C++ 端使用 quickfix,在 Java 端使用 quiickfix/j。我的担心和你一样,似乎 TextMessage 解决方案是间接的两步过程。我想知道是否有用于 quickfix 或 quickfix/j 的内置消息传递机制?由于消息顺序对我们来说非常重要,如果使用多个会话是否会出现乱序问题?
  • 更好的主意是创建写入文件的过程,创建 FIX 消息并将其发送给接受者。最好在消息创建后立即发送消息,排队是没有意义的。如果您按照要发送的顺序发送消息,那么乱序将是 Quickfix 问题,而不是您的应用程序问题。 Quickfix 使用 C++ 和 Java 的线程套接字。根据平台,它使用 Mina for Java 和基本的 C++ 套接字。
【解决方案2】:

FIX 可能更容易。但是如果您选择套接字,请确保将来自/在 C++ 程序上的数据发送/接收转换为/从网络字节顺序转换。 (请参阅参考资料:htons()htonl()ntohs()ntohl())。 Java 始终使用网络字节顺序,因此您不必在那里进行任何转换。

【讨论】:

  • 这不是多个架构中的库的问题。 Quickfix 库用户不必担心这一点。
【解决方案3】:

FIX 是基于文本的协议,即您不必担心字节顺序。在线路级别,您所做的只是发送字符缓冲区。因此,如果您在 C++ 程序中编写基于 java (quickfixj) 的客户端/服务器,只要遵守 FIX 协议,就不会出现问题。

再一次,正如 DumbCoder 上面指出的,如果您不太关心性能,您可以使用 quickfix(C++ 版本!)

【讨论】:

  • 非常感谢您的回复,那么我的担心就不是问题了。
【解决方案4】:

修复引擎的编写方式可以与其他方修复引擎进行通信。 双方的语言或平台无关紧要。 一方使用JAVA版本,另一方使用C++版本即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多