Обработка отклонения ИСПРАВЛЕНИЯ: получение сообщения об ИСПРАВЛЕНИИ по порядковому номеру в RefSeqNum с помощью QuickFix / J

#quickfix

#java #quickfix #исправление-протокол #quickfixj

Вопрос:

Я пытаюсь обработать отклонение ИСПРАВЛЕНИЯ ( MsgType 35=3 ), но мне неясно, как получить сообщение, на которое ссылается сообщение об отклонении ИСПРАВЛЕНИЯ.

ОТКЛОНЕНИЕ ИСПРАВЛЕНИЯ ссылается на отклоненное сообщение с помощью MsgSeqNum , в RefSeqNum поле (тег 45). Однако я не знаю, как получить отклоненное сообщение по его порядковому номеру. Я думаю, что это должно быть возможно, потому что механизм ИСПРАВЛЕНИЯ может повторно отправлять сообщения в диапазоне порядковых номеров (в ответ на запрос повторной отправки), поэтому, если движок может это сделать, я тоже должен.

Вопрос: как мне получить сообщение, на которое ссылается сообщение об отклонении в RefSeqNum поле?

Ответ №1:

Вы хотите программно обработать этот сбой? Как правило, отклонения более низкого уровня никогда не должны возникать в производственной среде. Я всегда имел дело с ними во время тестирования и проверки сообщений вручную, чтобы определить фактическое сообщение и тег, имеющий проблему.

В любом случае вы можете программно получить сообщение с помощью:

  1. Сначала просматриваем сеанс с помощью Session Session.lookupSession(SessionID sessionId)

  2. Получить MessageStore связанный с сеансом с помощью MessageStore Session.getStore()

  3. Получить фактическое сообщение с помощью MemoryStore.get(int startSequence, int endSequence, Collection<String> messsages)

Документацию по API для QuickFix / J можно найти здесь или в папке documentation .

Обратите внимание, что на шаге 3 вам нужно будет передать тот же порядковый номер, что и начальный и конечный порядковые номера.

Комментарии:

1. ссылки недоступны

2. Я реализовал это, но в моем хранилище сообщений список сообщений всегда пуст. Я использую FileStoreFactory и вижу, что там появляется сообщение. Нужна ли мне другая конфигурация для обеспечения доступа через MemoryStore?