2011-03-22 37 views
1

我需要比较QuickFIXJ中的两个修复消息(比如两个ExecutionReports)。比较QuickFIXJ中的两个FixMessages

让我们称他们为er1er2

现在,我的意思是通过比较它们是一堆领域必须是相同的。例如,我关心标签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 

} 

我缺少的东西? 有人可以提出更好/更快的方法吗?

回答

2

看来,没有功能比较API中的两个修复消息。但不是比较整个消息字段,最好的做法是只比较那些必需的字段。如果您确信这些字段将出现在FIX消息中,则会进行扩展。

另一个选择是在一个线程中进行比较,该线程不同于发送和接收消息的会话。很难确定消息是否需要在同一线程中进行比较,而不知道执行报告下游会发生什么情况,或者如果执行报告匹配,您的操作是什么。