Последовательности MsgSeqNum и разные сеансы

Например, у меня есть конфигурация для QuickFix/n с двумя сеансами, что-то вроде:

[DEFAULT]
...

[SESSION]
# Settings for first session
...

[SESSION]
# Settings for second session
...

Эти сеансы должны иметь разные последовательности MsgSeqNum, т. е. если я отправляю сообщение Logon в первые сеансы, оно должно иметь MsgSeqNum = 1, а сообщение Logon, отправляемое во второй сеанс, должно иметь MsgSeqNum = 1, потому что я отправляю сообщения в разные сеансы с разными последовательностями. Я прав?

И еще один сопутствующий вопрос. Возможно ли иметь одну общую последовательность MsgSeqNum для разных сеансов?

Обновить

Я интегрируюсь со сторонним сервером FIX. Их поддержка сказала мне, что я должен отправить два сообщения Logon (для двух сессий), но когда QuickFix/n отправляет их, я вижу следующую ошибку в ответ от второго Logon: MsgSeqNum too low, expecting 3 but received 1. Похоже, что их сервер FIX имеет общую/общую последовательность MsgSeqNum для этих сеансов (но я не уверен).

Итак, я хочу уточнить с этим вопросом, как QuickFix/n работает с последовательностями MsgSeqNum, потому что их плохие документы не освещают этот момент.


person Maxim    schedule 04.02.2020    source источник
comment
Каждая сессия должна иметь свой счетчик. У меня нет ссылки, чтобы заглянуть сюда, чтобы подтвердить это (я исхожу из своего опыта в этом). Что касается второго вопроса: можете ли вы назвать причину, по которой вам это нужно?   -  person TT.    schedule 04.02.2020
comment
@ТТ. Добавить раздел с объяснением, почему я задаю этот вопрос.   -  person Maxim    schedule 04.02.2020
comment
Я на 98% уверен, что они не обмениваются номерами последовательностей через 2 сеанса. Это было бы безумием. Я подозреваю, что у вас есть ResetOnLogon=Y, когда должно быть N.   -  person Grant Birchmeier    schedule 04.02.2020


Ответы (1)


Я нашел корень проблемы. Предоставленная конфигурация выглядит так:

[DEFAULT]
...

[SESSION]
# Settings for first session
ResetOnLogon=Y
...

[SESSION]
# Settings for second session
ResetOnLogon=N
...

Первый сеанс устанавливает соединение, отправляет Logon сообщение и сбрасывает MsgSeqNum, но второй сеанс всегда отправляет MsgSeqNum=1, потому что он не сбрасывает MsgSeqNum, а на стороне клиента и сервера они были разными (я полагаю, это произошло потому, что мой другой тестовый проект увеличился MsgSeqNum до до 3 на стороне сервера, когда я запускал его раньше).

Итак, Грант Бирчмайер в комментарии выше был прав, и последовательности MsgSeqNum различны для разных сеансов. Проблема была в конфигурации на стороне клиента.

person Maxim    schedule 05.02.2020