1

因此,我们发送一条不带边的 FIX 交易消息,银行拒绝使用 35=8 执行报告和 150=8 拒绝,然后是文本FIX Tag 54 (Side) has invalid value (0). Reason (should be either 1 or 2),然后是 35=3 拒绝消息Value is incorrect (out of range) for this tag。35=3 消息被破解,但 35=8 消息永远不会到达 fromapp。

我错过了一个设置吗?

在此处输入图像描述

4

2 回答 2

1

35=3 表示传输级别(又名管理员级别)拒绝。该消息在较低的解析层被拒绝,这意味着它的格式非常错误,甚至没有传递给您的应用程序。

通常这种拒绝意味着消息被弄乱了,以至于引擎甚至无法正确解析它,或者标头字段无法解析为已知会话。我有点惊讶您的特殊情况触发了 35=3 而不是 35=j。

我想您可以查看 FIX 规范,以了解当枚举类型标记具有未知值时它要求什么。在这种情况下,也许引擎遵循规范?

于 2017-10-05T20:44:12.483 回答
1

我猜想带有不正确54=0 标记的 35=8 消息无法到达 FromApp 或 FromAdmin 的原因是由于数据字典约束,但这给了我实现public void FromEarlyIntercept(Message msg, SessionID s)接口的机会,并且解决了问题一个糟糕的35=8 报告现在被报告给用户......但是引入了一个新问题,一个好的报告现在被报告两次。

所以我添加<value enum="0" description="ERROR"/>到枚举中<field number="54" name="Side" type="CHAR">,现在 35=8 消息不会被 35=3 消息拒绝。

于 2017-10-06T10:32:39.653 回答