У меня есть 2 сервера Tibco-Ems с отказоустойчивой настройкой. Если один сервер недоступен, активный сервер переключается на сервер отказоустойчивости, как ожидалось.Проблема с отказом Tibco-Ems
Однако время от времени я получаю странные ошибки. Затем новый активный сервер говорит: «reconnect failed failed: connection unknown for id = XY»
Это происходит, только если на моем клиенте есть открытое соединение. Но это то, что я ожидаю, соединение должно также переключиться на новый активный сервер. И, как я уже сказал, иногда это работает, а иногда и нет.
Когда я регистрируюсь для EMS-Exceptions в моем клиенте, я получаю сообщение об ошибке: «Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом».
StackTrace: на System.Net.Sockets.NetworkStream.Read (байты [] буфер, Int32 смещения, Int32 размер) в TIBCO.EMS.LinkTcp._readEx (байты [] буфер, Int32 смещения, Int32 размера) в TIBCO.EMS.LinkTcp._ReadWireMsg() в TIBCO.EMS.LinkTcp.LinkReader.Work()
Прямо сейчас у меня нет больше понятия, что я мог бы сделать. Может быть, кто-то может помочь мне понять, в чем проблема. Заранее спасибо
UPDATE: Поздний обновление здесь: Даже если я получаю ошибку «переподключение не удалось» он работает, как ожидалось. Второй сервер возьмет верх.
звучит хорошо в теории ... но в моем случае это не работает. Я всегда получаю сообщение «Снова подключиться». Так вы понимаете, что я делаю неправильно? – DanielG
Единственный способ получить сообщение «Снова подключиться» - это когда клиент пытается повторно подключить параметры повторного подключения, которые сервер уже очистил. Это почти всегда сопровождается успешным подключением, которое обычно не регистрируется, если вы не регистрируете каждое успешное соединение. Если это проблема, вы можете установить для параметра ft_reconnect_timeout значение, превышающее 60 секунд по умолчанию (значение указано в секундах). Добавление + CONNECT к вашему параметру log_trace должно помочь вам узнать больше о том, что происходит. – nochum
ОК еще раз спасибо, я посмотрю. Но что мне делать после успешного повторного подключения? Должно ли мое соединение работать по-прежнему, без каких-либо действий на стороне клиента? Возможно, в этом я и ошибаюсь. После того, как сервер отказоустойчивости занял верх, мое соединение уже недействительно! Так мне нужно создать новое соединение? Разве я не должен заботиться об этом? – DanielG