Обнаружение потери соединения для исправления шлюза? (Быстрая починка)

StackOverflow https://stackoverflow.com/questions/315743

Вопрос

Я пытаюсь найти хороший способ обнаружить потерю связи.

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

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

Это было полезно?

Решение

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

Вы разместили свой вопрос на QuickFix DL?

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top