Что должен делать клиент, пока сервер TIBCO EMS пытается выполнить аварийное переключение? - PullRequest
3 голосов
/ 24 октября 2008

Руководство пользователя TIBCO EMS (стр. 292) гласит:

Сервер резервного копирования будет работать бесконечно , чтобы либо А) стать основной сервер или B) переподключиться к основному серверу. Это также говорит клиенты могут получить уведомление об отказе , если коммутатор успешен (см. Также TIBCO EMS .NET reference pg 220).

У меня есть несколько вопросов, вытекающих из этих фактов ...

  1. Какие ошибки возникают на стороне клиента, когда серверы пытаются выполнить аварийное переключение / переподключение?

  2. Каков соответствующий ответ от клиента?

    • Получать новые объекты Connection из ConnectionFactory, пока один из них не заработает?
    • Ждать уведомления об отказе? (исправлены ли текущие экземпляры Connection в это время? или мне нужно получить новый экземпляр?)

Я надеюсь, что сценарий ясен, любая связанная информация или совет будут также оценены.

Ответы [ 2 ]

4 голосов
/ 25 октября 2008

Я могу по крайней мере ответить # 1 выше.

Если вы включили Tibems.SetExceptionOnFTSwitch (true); и настроив обработчик исключений для захвата сообщений, которые сервер отправляет клиенту, вы увидите следующее:

Для односерверных, отказоустойчивых сбоев соединения: «Соединение разорвано».

Для отказоустойчивых соединений: «Соединение выполнило отказоустойчивое переключение на»

Если вы попытаетесь опубликовать, когда соединение не работает, выдается исключение TIBCO.EMS.IllegalStateException с сообщением «Производитель закрыт».

для # 2 выше, я думаю, что ответ заключается в том, чтобы позволить библиотеке EMS обрабатывать как можно больше. Как только мы получили работоспособность функции переподключения EMS, она изящно пыталась переподключиться, пока сервер снова не стал доступен, и после переподключения у него никогда не возникало проблем. Единственная ошибка, вероятно, если вы попытаетесь опубликовать сообщение до того, как соединение с ems вернется. Вот где появляется обработчик исключений. Получив уведомление о переходе в режим отработки отказа, вы можете настроить обработку исключений на стороне издателя, чтобы подавлять ошибку до тех пор, пока соединение не вернется. Я не знаю, что вы скажете, когда исчерпали все попытки переподключения.

В любом случае, похоже, что наши два мира тесно связаны, когда дело доходит до EMS - надеюсь, что наши выводы (основанные на ваших комментариях к моим вопросам) помогут вам.

0 голосов
/ 25 октября 2013

Мы используем TEMS (Tibco EMS - продукт Tibco для WCF), поэтому он становится обязательным. Мы попытались сломать его, выполнив такие действия, как отказов сервера, чтобы заставить переключаться, и это работает очень хорошо. убедитесь, что вы используете версию 1.2, а не 1.1, потому что вы не можете делать ничего, кроме подтверждения клиента.

...