我需要在 QuickFIXJ 中比较两个修复消息(比如两个 ExecutionReports)。
让我们称他们er1
与er2
现在,我比较它们的意思是一堆字段必须相同。例如我关心标签 55、标签 207、标签 1 是相同的。但不是其他人。
在我看来,这样做的唯一方法是编写像这样昂贵(性能方面)的东西:
public static boolean compare(ExecutionReport er1,ExecutionReport er2)
{
StringField sf1 = new StringField(55);
StringField sf2 = new StringField(55);
er.getField(sf1);
er.getField(sf2);
if (sf1.getValue().equals(sf2.getValue())==false) return false;
... // continue with all of the other fields
... // in the same way
}
我错过了什么吗?有人可以建议更好/更快的方法吗?
似乎没有在API 中比较两个修复消息的功能。但最好不要比较整个消息字段,最好只比较那些必填字段。如果你确定这些字段将出现在 FIX 消息中,则扩展将是。
另一种选择是在与你发送和接收消息的会话不同的线程中进行比较。如果不知道执行报告下游会发生什么,或者如果执行报告匹配,你将采取什么行动,就很难决定是否需要在同一线程中比较消息。