gpt4 book ai didi

java - fastfix.Message 无法转换为quickfix.fix50sp2.Message

转载 作者:行者123 更新时间:2023-12-03 02:27:18 25 4
gpt4 key购买 nike

我正在使用最新的快速修复版本,即 1.6.0。我已经有针对 1.5.3 编写的代码,我想做的是将其升级到 1.6.0

我遇到的问题是,当我使用破解(msg,sessionID)方法时,它会抛出quickfix.Message无法转换为quickfix.fix50sp2.Message错误。我正在从 verifix 发送正确的 FIX50SP2 MarketDataSnapshotFullRefresh 消息。异常摘录如下

java.lang.ClassCastException:quickfix.Message 无法转换为quickfix.fix50sp2.Message
在quickfix.fix50sp2.MessageCracker.crack(MessageCracker.java:1555)
在 com.****.fixserver.FixMessageListener.fromApp(FixMessageListener.java:162)
在 fastfix.Session.fromCallback(Session.java:1731)
在quickfix.Session.verify(Session.java:1682)

如何将收到的消息破解为正确的SP2消息?

有一个crack50()方法,但是它需要一个SP2消息,而该消息在fromApp回调中不可用。

最佳答案

当开始字符串为 FIXT.1.1 时,quickfix 将使用 DefaultMessageFactory 将消息视为 FIX50。所以它会自动生成一条FIX.5.0消息。

解决方案是编写您自己的自定义消息工厂,以便在传输为 FIXT.1.1 时生成 SP2 消息。我就是这样做的。

编写一个实现 quickfix.MessageFactory 接口(interface)的自定义消息工厂。您可以复制 DefaultMessageFactory 代码并更改 create() 方法,如下所示。

 public Message create(String beginString, String msgType) {
MessageFactory messageFactory = messageFactories.get(beginString);
if (beginString.equals(BEGINSTRING_FIXT11)) {
// The default message factory assumes that only FIX 5.0 will be
// used with FIXT 1.1 sessions. A more flexible approach will require
// an extension to the QF JNI API. Until then, you will need a custom
// message factory if you want to use application messages prior to
// FIX 5.0 with a FIXT 1.1 session.
//
// TODO: how do we support 50/50SP1/50SP2 concurrently?
//
// If you need to determine admin message category based on a data
// dictionary, then use a custom message factory and don't use the
// static method used below.
if (!MessageUtils.isAdminMessage(msgType)) {
messageFactory = messageFactories.get(FIX50SP2);
}
}

if (messageFactory != null) {
return messageFactory.create(beginString, msgType);
}

Message message = new Message();
message.getHeader().setString(MsgType.FIELD, msgType);

return message;
}

关于java - fastfix.Message 无法转换为quickfix.fix50sp2.Message,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30074850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com