0

我在 FromAdmin 和 FromApp 中使用 MessageCracker Crack(message, sessionId);(我使用 1.4 版的 quickfix/n 并且消息破解器似乎也处理管理消息,至少重载OnMessage(Quickfix.Fix44.Longon message, SessionID sessionid){}的处理正确)。

我的问题是:如果我没有为通过 MessageCracker 的所有传入消息重载所有 OnMessage 方法,是否会为无法转发到重载方法的传入消息调用某种“catch-all-other”消息OnMessage方法? 我不希望 QuickFix 发送消息仅仅因为例如 FIX 服务器发送未处理的消息而被拒绝,但是这对于流程可能不是必需的。我只想自己处理。我觉得在 try/catch 中处理它不太舒服,因为我觉得那不是最干净的方法。

有什么建议吗?

谢谢

4

2 回答 2

3

不,没有。

任何受人尊敬的 FIX 交易对手都会有一个规范,告诉您他们将发送给您的消息类型(以及这些消息可能包含哪些字段)。

因此,您应该了解您需要支持的所有消息类型,并且可以OnMessage为每种类型提供调用。

您可以在调用之前预先测试消息字符串的类型字段crack()。这会奏效,但我认为这是错误的。

于 2013-07-31T12:31:48.347 回答
1

您可以考虑 try/catch 最干净的方法。

在内部,Crack() 方法只是搜索可以处理接收到的消息类型的方法(使用反射)。如果找不到,则会引发QuickFix.UnsupportedMessageType 异常。

重要提示:QuickFix 不会通过 MessageCracker 拒绝不受支持的消息,如果需要,您需要以编程方式拒绝它。

当您遇到不知道对手方将发送的所有消息的情况时,我只能看到以下两个选项:

  1. 捕获 UnsupportedMessageType 异常并自行处理消息字符串。
  2. 不捕获异常,通过 OnMessage 事件忽略它
于 2013-07-31T13:24:35.293 回答