QuickfixJ - 我在日志中获取 sec 定义详细信息,但是当我尝试检索字段信息时 message.getGroup 方法失败

QuickfixJ - I am getting sec definition details in logs but message.getGroup method fails when I try to retrieve field information

我通过使用 quickfixj 的 java 应用程序请求它时,我的日志中收到来自 ICE 的 35=d 消息,其中包含所有详细信息。 在 onMessage 实现中,我试图获取组数据和单个字段的值,但我的代码在 getGroup() 处失败,并给出找不到该字段的错误。

quickfix.fix44.SecurityDefinition.NoUnderlyings group  = new quickfix.fix44.SecurityDefinition.NoUnderlyings();
message.getGroup(count, group); 

此 getGroup 方法在内部调用 quickfixJ 的 getGroups 函数,该函数失败是因为在下面一行 -

this.getGroups(group.getFieldTag()); //group.getFieldTag() is 711 or NoUnderlyings 

这里有什么我遗漏的吗?我尝试了不同的方法来获取这些字段,但没有成功,将不胜感激。

只是观察 - 在 fromapp /on message 方法中,我在执行 message.toString(); 时没有看到完整的消息。我只看到第一部分,没有显示具有实际安全性(许多组)的第二部分。不确定是否有任何其他方式(toString() 除外)可以在方法中查看完整消息。

我在 message.toString();

fromApp/OnMessage 收到的消息

<20190828-12:14:47, FIX.4.4:XXXX/1/0->ICE, incoming> (8=FIX.4.4 9=XXXXX 35=d 49=ICE 34=5 52=20190828-12:14:47.695 56=XXXX 57=1 322=10342 323=4 320=1566994457340_0 393=91 82=1 67=1 9064=0 711=91

我在日志中收到的消息:

<20190828-12:14:47, FIX.4.4:XXXX/1/0->ICE, incoming> (8=FIX.4.4 9=XXXXX 35=d 49=ICE 34=5 52=20190828-12:14:47.695 56=XXXX 57=1 322=10342 323=4 320=1566994457340_0 393=91 82=1 67=1 9064=0 711=91 311=5094981 309=UPL FQF0021.H0021 305=8 463=FXXXXX 307=UK Peak Electricity Futures (Gregorian) - UK Grid - Q1 21 308=IFEU 542=20201230 436=1.0 9013=0.01 9014=1.0 9040=0.01 9041=1.0 9017=1.0 9022=768 9024=1.0 9025=Y 916=20210101 917=20210331 9201=1900 9200=15 9202=Q1 21 9300=8148 9301=IPE UK Grid, UK (Peak) 9302=UK Grid 9303=UPL 998=MWh 9100=GBP 9101=GBP / MWh 9085=hourly 9083=2 9084=0 9061=4639 9062=UK Peak Electricity Futures (Gregorian) 9063=UK Power Peakload Futures (Gregorian) 9032=0.01 9215=1 9216=0 763=800 311=5094980 309=UPL FMH0021! 305=8 463=FXXXXX 307=UK Peak Electricity Futures (Gregorian) - UK Grid - Mar21 308=IFEU 542=20210225 436=1.0 9013=0.01 9014=1.0 9040=0.01 9041=1.0 9017=1.0 9022=276 9024=1.0 9025=Y 916=20210301 917=20210331 9201=1875 9200=12 9202=Mar21 9300=8148 9301=IPE UK Grid, UK (Peak) 9302=UK Grid 9303=UPL 998=MWh 9100=GBP 9101=GBP / MWh 9085=hourly 9083=2 9084=0 9061=4639 9062=UK Peak Electricity Futures (Gregorian) 9063=UK Power Peakload Futures (Gregorian) 9032=0.01 9215=1 9216=0 457=1 458=GB00H1RK4P63 459=U4 763=0

您使用的 QuickFIX/J 是哪个版本?在某些旧版本中,当存在未知字段时,消息会被截断。 这让我想到您使用的数据字典是否真的包含 ICE 发送的所有字段的问题。你的字典里有 9000 多个标签吗?请仔细检查。