Интегратор WSO2: как настроить отработку отказа инициатора FIX?

Как настроить конечную точку инициатора WSO2 Integrator FIX, которая использует автоматическое переключение сеанса при сбое, поддерживаемое Quickfix/J?

В Quickfix/J можно настроить автоматическое отключение сеанса инициатора с помощью файла конфигурации FIX следующим образом (при условии, что два сервера FIX на локальном хосте прослушивают порты 9997,9998).

[SESSION]
SenderCompID=SYNAPSE
TargetCompID=EXEC
SocketConnectHost=localhost
SocketConnectPort=9997
SocketConnectHost1=localhost
SocketConnectPort1=9998
ReconnectInterval=5

Во всех примерах в документации WSO2 показаны конечные точки FIX, настроенные с жестко заданным хостом, например:

<send>
    <endpoint>
       <address uri="fix://localhost:9997?BeginString=FIX.4.4&SenderCompID=SYNAPSE&TargetCompID=EXEC"/>
    </endpoint>
</send>

Этот шаблон невозможен для нас, потому что целевой сервер FIX находится на удаленном сервере с именем хоста, которое отличается в зависимости от среды, поэтому я никогда не хочу хардкорить целевой хост таким образом.

В идеале я хотел бы сделать что-то вроде этого:

<send>
    <address uri="fix://<dynamic hostname>:9997?BeginString=FIX.4.4&SenderCompID=SYNAPSE&TargetCompID=EXEC"/>
    // the endpoint representing the above FIX Session
    // where the target host is dynamically defined
    // and not hardcoded anywhere in my car application
</send>

На стороне получателя/слушателя в качестве прокси-службы это работает нормально, потому что в прокси-службе он поднимает конфигурацию из предоставленного параметра URL-адреса конфигурации инициатора, поэтому отработка отказа происходит «под капотом» с помощью механизма FIX.

<parameter name="transport.fix.InitiatorConfigURL">quickfix.cfg</parameter>

Однако не похоже, что можно сделать то же самое, когда вы отправляете сообщение на целевой сервер FIX.

Есть ли у кого-нибудь хорошее предложение или пример того, как этого добиться?


person Petteri Pertola    schedule 19.11.2018    source источник


Ответы (1)


Поскольку вы используете обычную «адресную конечную точку», вы также должны иметь возможность использовать обычные конфигурации аварийного переключения: см. https://docs.wso2.com/display/ESB500/Configuring+Failover+Endpoints для информации.

person Jan    schedule 28.11.2018
comment
Привет, Ян, это все равно потребует от меня жестко закодировать имя хоста. Это отличается для каждой среды, поэтому я хочу ввести его из переменных среды или аналогичных. Кроме того, я хотел бы использовать аварийное переключение сеанса QuickfixJ, а не физическое аварийное переключение, как это делается ESB. - person Petteri Pertola; 28.11.2018
comment
Я не слишком знаком с FIX, но конфиг тоже настраивается локально, верно? Таким образом, вы настраиваете конечную точку для каждой среды. Существует несколько решений, каждое со своим недостатком: вы можете определить файл реестра «dynamic_hostname» с именем хоста, а затем динамически определить конечную точку или использовать артефакт «Конечная точка» в реестре и ссылаться на эту конечную точку, используя «ключ =.. ' - person Jan; 30.11.2018