我正在编写一些处理许多不同修复版本的代码(4.2,4.3,4.4)。 我遇到的问题是,当编写处理程序对象时,我被迫重复代码,因为每个修复版本将使用不同的处理程序。 e.g。
@Handler
public void executionHandler(quickfix.fix42.ExecutionReport execution, SessionID sessionID) {
System.out.println(execution.getClOrdID().getValue());
}
@Handler
public void executionHandler(quickfix.fix43.ExecutionReport execution, SessionID sessionID) {
System.out.println(execution.getClOrdID().getValue());
}
我写的实际代码要复杂得多(我正在检索几个字段并操纵数据)。我想不出如何在不诉诸反思的情况下减少这种重复。
答案 0 :(得分:1)
quickfix.Message
的子类,它是quickfix.FieldMap
的子类。 FieldMap类具有用于获取字段数据的公共访问器。 typesafe消息包装器使用它们来获取消息数据。
例如,
double averagePrice = message.getDouble(AvgPx.FIELD);
这适用于包含该字段的任何Message。所有生成的字段都有一个带有标签号的FIELD静态成员。 quickfix.MsgType
类还有消息类型的常量,这对于自定义动态调度消息非常有用。
如果您要访问MsgType等邮件标题字段,请记住通过message.getHeader()
方法访问这些字段。
这是奖金提示。如果您不需要或不需要类型安全消息包装器,则可以定义一个简单的自定义quickfix.MessageFactory
,它只会创建基本的quickfix.Message
对象。这将在处理传入消息时带来小的性能提升。