#quickfix
#java #quickfix #исправление-протокол #quickfixj
Вопрос:
Я пытаюсь обработать отклонение ИСПРАВЛЕНИЯ ( MsgType 35=3
), но мне неясно, как получить сообщение, на которое ссылается сообщение об отклонении ИСПРАВЛЕНИЯ.
ОТКЛОНЕНИЕ ИСПРАВЛЕНИЯ ссылается на отклоненное сообщение с помощью MsgSeqNum
, в RefSeqNum
поле (тег 45). Однако я не знаю, как получить отклоненное сообщение по его порядковому номеру. Я думаю, что это должно быть возможно, потому что механизм ИСПРАВЛЕНИЯ может повторно отправлять сообщения в диапазоне порядковых номеров (в ответ на запрос повторной отправки), поэтому, если движок может это сделать, я тоже должен.
Вопрос: как мне получить сообщение, на которое ссылается сообщение об отклонении в RefSeqNum
поле?
Ответ №1:
Вы хотите программно обработать этот сбой? Как правило, отклонения более низкого уровня никогда не должны возникать в производственной среде. Я всегда имел дело с ними во время тестирования и проверки сообщений вручную, чтобы определить фактическое сообщение и тег, имеющий проблему.
В любом случае вы можете программно получить сообщение с помощью:
-
Сначала просматриваем сеанс с помощью
Session Session.lookupSession(SessionID sessionId)
-
Получить
MessageStore
связанный с сеансом с помощьюMessageStore Session.getStore()
-
Получить фактическое сообщение с помощью
MemoryStore.get(int startSequence, int endSequence, Collection<String> messsages)
Документацию по API для QuickFix / J можно найти здесь или в папке documentation .
Обратите внимание, что на шаге 3 вам нужно будет передать тот же порядковый номер, что и начальный и конечный порядковые номера.
Комментарии:
1. ссылки недоступны
2. Я реализовал это, но в моем хранилище сообщений список сообщений всегда пуст. Я использую FileStoreFactory и вижу, что там появляется сообщение. Нужна ли мне другая конфигурация для обеспечения доступа через MemoryStore?