quickfixj 启动器在登录时手动重新发送重置到 seqnum
quickfixj initiator manually resend reset to a seqnum at logon
我有一个 quickfixj 启动器连接到供应商的接受器并接收消息。我将修复消息保存在由线程处理的缓冲区中。为了避免在缓冲区中的消息崩溃时丢失消息,我处理了最后一个 seqnum,并计划在我重新连接时为我这边的下一个 seqnum 发送重新发送消息。
我知道更好的解决方案是在收到消息之前保存消息,但设计是为了避免在 onMessage 调用中进行任何数据库访问。
我没有找到如何完成此操作的任何示例,重新发送对特定序列号的请求。我应该简单地重载登录消息并发送 seqnum 吗?
有人有例子吗?
我猜你已经按照上一个线程同步了 。
QuickFixJ 管理 2 个序列号:
- SenderSequenceNum:发送消息时使用的序列号。
- TargetSequenceNum:预期接收的序列号。
所以你有两个选择:
选项 1:在 QuickfixJ onMessage() 回调线程上处理接收消息。因此,在出现异常的情况下,序列号不会增加。并且 QuickFixJ 在收到下一条修复消息时自动发送重发请求,因为它会检测到序列间隙。
选项 2:保留您已成功处理的序列号。在崩溃的情况下,在重新启动时,您可以使用以下设置预期的接收序列号:
Session.lookupSession(session_).setNextTargetMsgSeqNum();
因此,如果您收到高于该序列号的序列号,QuickfixJ 会自动发送重发请求。
注意:请勿更改发件人序列号,否则另一方将收到低于预期的序列号,并可能导致断开连接。
我有一个 quickfixj 启动器连接到供应商的接受器并接收消息。我将修复消息保存在由线程处理的缓冲区中。为了避免在缓冲区中的消息崩溃时丢失消息,我处理了最后一个 seqnum,并计划在我重新连接时为我这边的下一个 seqnum 发送重新发送消息。 我知道更好的解决方案是在收到消息之前保存消息,但设计是为了避免在 onMessage 调用中进行任何数据库访问。 我没有找到如何完成此操作的任何示例,重新发送对特定序列号的请求。我应该简单地重载登录消息并发送 seqnum 吗? 有人有例子吗?
我猜你已经按照上一个线程同步了
QuickFixJ 管理 2 个序列号:
- SenderSequenceNum:发送消息时使用的序列号。
- TargetSequenceNum:预期接收的序列号。
所以你有两个选择:
选项 1:在 QuickfixJ onMessage() 回调线程上处理接收消息。因此,在出现异常的情况下,序列号不会增加。并且 QuickFixJ 在收到下一条修复消息时自动发送重发请求,因为它会检测到序列间隙。
选项 2:保留您已成功处理的序列号。在崩溃的情况下,在重新启动时,您可以使用以下设置预期的接收序列号:
Session.lookupSession(session_).setNextTargetMsgSeqNum();
因此,如果您收到高于该序列号的序列号,QuickfixJ 会自动发送重发请求。
注意:请勿更改发件人序列号,否则另一方将收到低于预期的序列号,并可能导致断开连接。