我希望有人能解释一下Quickfixn引擎是如何处理传出修复消息的……我已经建立了一个传出连接,并且我得到了心跳。然而,当我生成传出消息时,它被拒绝了,因为它表明标签58对于此消息类型无效……(35=AE) ...通常,如果这是一个入站连接,我只需修改数据字典,一切都会好起来的……但是考虑到这是一个传出连接,再加上我的UseDataDictionary属性设置为'N‘...quickfix引擎使用什么来验证传出消息?是否可以更改某些内容以允许引擎传递消息?或者,唯一的解决办法是不在我的外发消息中包含此标记?
在这件事上的任何帮助都将非常感谢。
编辑-
邮件被quickfix引擎拒绝。我正在构造的消息和相应的拒绝消息是:
8=FIX.4.4 9=400 35=AE 34=38 49=XXX 52=20130528-23:11:04.040 56=YYY 31=1.3022 32=1000000.00 39=0 55=欧元/美元58=ABCD 60=20130528-22:34:52.000 64=20130531 75=20130529 570=N 571=ABCD 5495=0 5971=1302200.00 552=1 54=2 37=ABCD 448=LP1-DBAB
8=FIX.4.4 9=130 35=3 34=38 49=YYY 52=20130528-23:11:04.283没有为此消息类型定义56=XXX 45=38 58=Tag 371=58 372=AE 373=2 10=033
我见过传入的消息被quickfix引擎拒绝,因为数据字典没有正确的消息规范...我认为这可能是相同的事情,但传出连接似乎不使用数据字典。
发布于 2013-05-30 21:07:56
您的修复库不会拒绝消息。消息被发送到对方,然后对方在收到并验证您的消息时以无效为由拒绝您的消息。这样做的原因是,如果存在标签58,则标签58必须是NoSides重复组(标签552)的一部分,在您的情况下不是,这使得消息格式错误。你要做的就是发送一条“逻辑上”正确的消息。我建议您参考适当的FIX协议规范,以获得有关如何构造正确消息的参考。
发布于 2013-05-31 01:50:19
Vlad的回答是正确的,但我想提醒您问题中的另一个危险。
我已将UseDataDictionary属性设置为“N”
我有90%的把握你不想这么做。无论您认为使用=N获得了什么,都可能是基于对某些东西的误解。
如果没有DD,您将无法读取具有重复组的消息,因为引擎无法知道哪些字段位于哪个组中。
实际上,每个地点都使用重复的组。因此,您需要设置UseDataDictionary=Y,并且需要使用DataDictionary=<file>指定一个xml文件。
我们允许在QF/n中使用=N的唯一原因是为了与QF/C++和QF/j保持一致。
https://stackoverflow.com/questions/16824857
复制相似问题