2011-03-22 44 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消息中,則會進行擴展。

另一個選擇是在一個線程中進行比較,該線程不同於發送和接收消息的會話。很難確定消息是否需要在同一線程中進行比較,而不知道執行報告下游會發生什麼情況,或者如果執行報告匹配,您的操作是什麼。