Сравните два сообщения FixMessages в QuickFIXJ - PullRequest
1 голос
/ 22 марта 2011

Мне нужно сравнить два сообщения исправления (скажем, два ExecutionReports) в QuickFIXJ.

Давайте назовем их 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

}

Я что-то упустил?Кто-нибудь может предложить лучший / более быстрый подход?

1 Ответ

2 голосов
/ 23 марта 2011

В API , похоже, нет функции для сравнения двух сообщений об исправлениях. Но вместо сравнения целых полей сообщения лучше всего сравнить только те поля, которые являются обязательными. Расширение будет, если вы уверены, что эти поля будут присутствовать в сообщении FIX.

Другим вариантом будет сравнение в потоке, отличном от потока для сеанса, в который вы отправляете и получаете сообщения. Было бы трудно решить, нужно ли сравнивать сообщения в одном и том же потоке, не зная, что происходит ниже по течению с отчетами о выполнении или каковы ваши действия, если отчеты о выполнении совпадают.

...