问题标签 [quickfixj]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
log4j - QuickFIX/J 旋转 .messages.log
除了那个帖子,我在网上找不到任何可以很好地回答这个问题的东西。
有什么方法可以使用 QuickFIX/J 旋转日志文件?我正在使用 Log4j 来轮换我的日志文件,但我无法轮换 QuickFIX 消息。
非常感谢
quickfix - 如何在 QuickFix/J 中编写 OrderCancelRequest
我正在尝试使用 FIX.4.2 创建 OrderCancelRequest,但与 OrderID、OrigClOrdID 和 ClOrdID 混淆。我在网上搜索,但我不清楚。如果可能,请解释这些参数并提供 OrderCancelRequest 的代码片段。
提前致谢。
quickfix - Fix.4.2 协议实现(Fiximulator - Banzai(client)) 消息日志
我正在尝试实现 Fix.4.2 协议,但是我在下面附加的消息日志很难理解。这里 Logon(35=A) 请求是从客户端与 MsgSeqNum(34=1) 一起发送的。然后为了测试 ResendRequest 和 SequenceReset 会话级消息,我发送了一个带有 MsgSeqNum=7 的 NewOrderSingle 请求(而不是 MsgSeqNum=2,因为后续消息应该在登录请求后增加 msgseqnum)。正如预期的那样,MsgSeqNum 太高了,一个 Fiximulator 响应了 ResendRequest(35=2),无法从 2 发送到 0(即从 2 到 7)。这里为什么 Fiximulator 不等待客户的回复?相反,它正在发送心跳消息。为什么客户端发送 ResendRequest 以响应 Fiximulator 的 ResendRequest 而不是发送 SequenceReset 消息?
如果可能,还要解释剩余的情况。
quickfix - 登录后发送 ResendRequest
我的客户端修复引擎使用 quickfix4j 连接到服务器修复引擎。
服务器修复引擎在周日凌晨 1 点到周五下午 5 点运行。
这是我的启动器配置
我的会话在 19:00 注销:EST(即 00:00:00 UTC)。这是对的。
再次客户端修复引擎发送登录请求并从服务器获取登录响应。登录响应后,我立即看到我的修复引擎正在重新发送请求(35 = 2)。
我观察到我的登录请求 35=A 的序列号为 0,但服务器结果要高得多。
由于此客户端修复引擎发送 ResendRequest。
我需要更新我的配置来解决这个问题吗?
quickfix - ResetOnLogout 是/否
我的服务器修复引擎有一个为期一周的会话。但是我的客户端修复引擎有一天的会话。
在 EOD 它注销并再次登录,它正在重置序列号(登录消息有 34 = 0),即使我设置了 ResetOnLogout = N。这个对吗?
如果我不想在周中重置序列号,我是否需要让我的客户端会话与服务器会话相同(一周开始-->太阳结束-->周五)?
java - QuickFIX/J 中断开客户端的消息队列行为
我想澄清QuickFIX/J
(FIX 4.2)在以下情况下的行为。QuickFIX/J
此通信涉及两方:
- 客户端发起程序,称为I。
- 我们公司的接受者程序,称为A。
当我登录A时,他们用 tag 交换 FIX 消息35=A
。建立连接后,我开始提交订单。然而,可能有一点,我意外断开连接,此时A决定为I的所有未结订单发送取消(这是有效的,因为A不知道我为什么失败或我什么时候会活着回来)。
请注意,整个取消连接过程由A单独启动和处理 - 它从A的onLogout(...)
方法启动并由其正常的订单管理机制处理。为I35=F
的每个未结订单生成一条消息,并在每次成功取消时生成一个( )。ExecutionReport
35=8
当我活着回来时,这些ExecutionReport
s 必须以某种方式交付给我,以便它知道它之前的所有订单都已被取消。我的印象是,QuickFIX/J
消息队列实现在没有应用程序级帮助的情况下处理了这个问题。确保所有QuickFIX
消息都能传递给交易对手 ( http://permalink.gmane.org/gmane.comp.finance.quickfix.devel/169 )。
然而,与我的理解相反,A的日志ExecutionReport
中没有显示,或者在我重新连接时没有发送给我,导致我不知道它之前的订单已被取消。我注意到由于in方法的以下源代码没有发生日志记录:QuickFIX
sendRaw(Message message, int num)
Session
QuickFIX/J
在为IExecutionReport
断开连接发起的取消生成消息时,会话未登录,因此它从未命中并且没有发生日志记录。我相信出于同样的原因,没有消息排队(基于我没有收到任何消息的事实)。send(messageString);
我们公司基于QuickFIX/J
保证所有消息都能无损传递的信念进行了许多实施,但我对上述场景的观察表明并非如此。
QuickFIX/J
当会话未登录时, 的消息队列在这种情况下的表现如何?无论如何,它应该排队消息,等待将来会话再次可用时发送,还是在会话关闭时停止排队?
fix-protocol - 在处理 FIX 传入消息时处理 QuickFix/J 中的错误的选项
我正在使用 QuickFIX/J 来实现一个非常简单的跟踪TradeCaptureReport
消息的应用程序。基本上,该应用程序仅将通过接收到的所有消息存储public void fromApp(Message message, SessionID session)
到数据库中。
假设由于某种原因数据库暂时停机。解决这种情况的最佳方法是什么?
只需抛出一个
RuntimeException
frompublic void fromApp(Message message, SessionID session)
。这将防止消息从队列中删除,并且fromApp
将使用此消息一次又一次地调用,直到数据库再次启动。到达我的 FIX 引擎的其他消息将堆积在我们这边。一旦我们检测到数据库连接问题,我们就会注销并从
fromApp
. 这确保了最后一条消息不会从队列中删除,并且任何进一步的消息都将堆积在 FIX 会话的另一端(在对方)。我们继续轮询数据库,直到它再次出现。再一次,我们登录并从我们离开的地方继续。
还有其他选择吗?
fix-protocol - 如何在 FIX 消息中创建多方?
我需要创建TradeCaptureReport
FIX 消息。在我尝试创建之前,如何做到这一点很清楚Parties
:
有人可以提供 Java 代码示例如何创建和链接它们RptSide (803)
吗?
jvm - SSL Handshake 在 Linux 上不工作,但在 OS X 上工作
我正在对使用 QuickFIX/J 并使用 Groovy 2.4.5 编写的应用程序进行故障排除,该应用程序使用 Gradle 2.10 构建。此 FIX 服务器还通过 Spring-boot 1.2.6 提供 API。
虽然从 OS X 运行时应用程序可以通过 SSL 连接连接到测试对等接受器,但从 Ubuntu 14.04 运行时它不起作用。
Linux 事件日志:
[时间戳]:断开连接:套接字异常(/ [ip:port]):javax.net.ssl.SSLHandshakeException:SSL握手失败。
我试过检查证书,keytool
但找不到证书问题。我还检查了文件的路径是否匹配大小写,排除了 OSX 文件系统不区分大小写的性质。
证书由运行接受者的公司生成和签名。如何进一步解决Ubuntu 上的握手失败问题?
更新
在为 QuickFIX/J 实现更多日志记录后,我得到了额外的信息。我尝试的所有谷歌搜索都没有很好地解释错误的含义:
[时间戳] [NioProcessor-3] 调试 o.apache.mina.filter.ssl.SslHandler - 来自 SSLEngine.closeInbound() 的意外异常。javax.net.ssl.SSLException:入站在收到对等方的 close_notify 之前关闭:可能的截断攻击?
java - 如何测试 QuickFIXJ 应用程序
我已经实现了一个QuickFIX/J应用程序(J
代表Java
)。现在我考虑如何设置固定的测试用例。
我有点熟悉,JUnit
但我不知道它是否适合那个问题,因为QuickFIX/J
有回调(例如fromApp
-Application
类的方法)。
也许有人遇到过同样的问题并找到了一个很好的解决方案。;)