Как настроить конечную точку инициатора 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.
Есть ли у кого-нибудь хорошее предложение или пример того, как этого добиться?