【发布时间】:2021-08-03 00:51:48
【问题描述】:
我正在尝试将 QFJ 集成到单线程应用程序中。起初我试图将 QFJ 与我自己的 TCP 层一起使用,但我无法解决这个问题。现在我只是想整合一个启动器。根据我对 QFJ 的研究,我认为整体设计应该如下:
应用程序将不再是单线程的,因为 QFJ 发起程序将创建线程,因此需要一些同步。 这里我使用的是 SocketInitiator(我只处理一个 FIX 会话),但我希望稍后我可以使用线程版本。
将启动器集成到我的应用程序中有两个方面:
- 接收方(fromApp 回调):我相信这很简单,我只是将消息推送到 MainProcessThread 使用的线程安全队列。
- 发送方:我正在努力寻找这方面的文档。我应该如何处理同步?从 MainProcessThread 调用 Session.sendToTarget() 是否安全?还是我需要进行一些同步?
【问题讨论】:
-
不确定您的问题是什么。 “类
quickfix.Session线程安全吗?”,也许?是的。 -
谢谢迈克尔!实际上,既然答案是肯定的,那是唯一的问题,我将重新表述。我很难在 quickfix javadoc 或 github 上找到这种信息。你有一个链接来备份这个吗?如果可以的话,你能把它给一个答案,这样我就可以把它标记为已回答。
-
真的是三件事。 1) 我在工作中使用过 quickfix,并且知道我们不会用任何东西来包装这些组件以实现线程安全,而且我们从来没有遇到任何问题 2) 鉴于 quickfix 作为一个框架是基于使用多个线程的想法,提供非线程安全的原语是非常不负责任的 3)我刚才检查了
quickfix.Session的实现,发现它们使用的是可重入锁。
标签: java multithreading thread-safety fix-protocol quickfixj