Есть FB2.0 SS и служба работающая на этом же компе. Служба подписывается
на события и слушает их. Всё это работает много дней. В какой то момент
перестают доходить события до службы.
Есть такая проблема, причем и на 2.0.6
Аналогично - висит служба, которая до получения события не делает ничего.
Но очень желательно не пропускать ни одного события, потому что при
получении - надо сделать вычисления и положить в БД результат.
Правда, у меня в качестве клиента используется .Net Provider.
В моем случае проблема связана с потерей TCP-соединения, что в общем и
понятно.
Я понимал, что конечно - для эвента есть отдельное TCP-соединение.
Но сделал предположение: если обрыв происходит не по вине железа (с 99,999%
вероятностью) то оборвутся оба соединения - и для комманд, и для эвента.
Поэтому недолго думая, кроме потока, ждущего эвент - периодически выполняю в
основном соединении какую-то операцию, по возможности самую малозатратную.
Но которая точно уйдет на сервер.
Сначала думал делать Allocate Statement/Drop statement. Но в протоколе 2.1
такой набор к серверу FB отправлен не будет.
Поэтому остановился на паре начать транзакцию/commit.
Если операция прошла с ошибкой - немедленный reconnect с перерегистрацией
эвента.
P.S. в 2.0.6 есть баг в эвентах - после обрыва коннекта сокет эвента
остается открытым бесконечно.
keeplalive настроен. (и в основном коннекте такое не наблюдается)
Но Влад мне тогда сказал что есть и более свежие версии. :-)