我在FromAdmin和FromApp中使用MessageCracker Crack(message, sessionId);
(我使用的是quickfix / n的1.4版本,而消息破解者似乎也处理了管理消息,至少正确处理了重载的OnMessage(Quickfix.Fix44.Longon message, SessionID sessionid){}
)。
我的问题是:如果我没有为通过MessageCracker的所有传入消息重载所有OnMessage方法,那么会出现某种“catch-all-other”消息方法,该方法将被调用无法转发到的传入消息一个重载的OnMessage
方法?我不想让QuickFix发送消息拒绝只是因为,例如FIX服务器发送未处理的消息,但是,这可能对流程流不是必不可少的。我只是想自己处理它。我在try / catch中处理它感觉不舒服,因为我觉得这不是最干净的方法。
有什么建议吗?
由于
答案 0 :(得分:2)
不,没有。
任何受人尊敬的FIX交易对手都会有一个规范,告诉您他们将发送给您的消息类型(以及这些消息可能包含哪些字段)。
因此,您应该知道需要支持的所有消息类型,并且可以为每个消息提供OnMessage
调用。
您可以在调用crack()
之前预先测试消息字符串的类型字段。这可行,但我认为这是误导。
答案 1 :(得分:1)
你可以认为try / catch是最干净的方法。
在内部,Crack()方法只搜索可以处理接收消息类型的方法(使用Reflection)。如果找不到,则抛出 QuickFix.UnsupportedMessageType异常。
重要提示:QuickFix不会通过MessageCracker拒绝不支持的邮件,如果需要,您需要以编程方式拒绝它。
如果您有一个场景,您不知道对方将发送的所有消息,我看不到这两个选项: