2008-11-24 5 views
2

Я пытаюсь найти хороший способ обнаружить потерю связи.Обнаружение потери подключения к шлюзу? (QuickFix)

Мой адаптер выполнен в виде приложения Fix :: Application, основанного на одном из примеров. Он использует инициатор сокета для подключения к шлюзу.

Когда я выключаю Интернет, требуется около 30 секунд для запуска метода onLogout Fix :: Application. Кажется, что какой-то базовый класс будет знать, что проблема с сокетом намного раньше. Есть ли быстрый способ захватить это?

ответ

4

Лучшим способом решения этого, вероятно, будет уменьшение интервала сердцебиения, чтобы вы знали раньше. Я не знаю никаких сообщений, которые срабатывают для потери TCP-соединения, но я не думаю, что QuickFix также прослушивает события ОС. Хотя, вероятно, это произойдет через событие fromAdmin, если бы было такое сообщение.

Вы отправили свой вопрос в QuickFix DL?

+0

Это работает, я тестировал его. – 2009-08-07 12:39:05

2

Возможно, что исправленный движок, который вы используете, не перезвонит, когда TCP отключен, или он вызывает что-то другое, кроме onLogout. Поскольку вы используете исправление, я предполагаю, что это приводит к выходу из-за пропущенных сердечных сокращений.

Скорее всего, это будет выглядеть в коде и проверять, где выполняется сокет, и какой путь выполняется, когда это происходит.

+1

Да, QuickFIX не справляется со всеми ошибками сокета (даже при установлении нового соединения). – 2010-01-17 01:13:47

1

TCP сам по себе имеет собственный механизм сердцебиения, называемый SO_KEEPALIVE. Проблема в том, что интервал по умолчанию для этого биения может достигать 2 часов. Это настроено на уровне ОС. Поэтому в теории вы можете включить SO_KEEPALIVE, настроить разумный интервал сердцебиения на уровне ОС и быть счастливым. Однако, поскольку, как сказано, это очень зависит от ОС, большинство приложений предпочитают внедрять heartbeating на уровне приложения, а FIX не является исключением. Уменьшение интервала пульса FIX - это путь, который стоит здесь, особенно если вы полагаетесь на отмену отмены и дополнительные секунды незаметной потери соединения могут привести к нежелательным исполнениям. Шлюз FIX, реализованный поверх любого механизма исправления, должен поддерживать конфигурацию heartbeating из коробки. Посмотрите на пример CoralGateway. (Отказ от ответственности: я являюсь одним из разработчиков CoralGateway)

Смежные вопросы