Повторное подключение слушателя JMS JBossMQ

Каждый веб-сайт может запретить сторонним доменам встраивать свой контент. (Как? Как предотвратить загрузку страницы моего сайта через сторонний фрейм сайта iFrame ).

Так что проблема не в вашем коде. Google отказал в доступе для встраивания его в iframes.

13
задан MattGrommes 6 September 2008 в 17:33
поделиться

4 ответа

Необходимо реализовать в клиентском javax.jms кода. ExceptionListener. Вам будет нужен метод, названный onException. Когда соединение клиента потеряно, необходимо получить JMSException, и этот метод назовут автоматически. Единственная вещь, которую необходимо высматривать, состоит в том, если Вы намеренно разъединяетесь от JBossMQ - который также выдаст исключение.

Некоторый код мог бы быть похожим на это:

    public void onException (JMSException jsme)
    {
        if (!closeRequested)
        {
            this.disconnect();
            this.establishConnection(connectionProps, queueName, uname, pword, clientID, messageSelector);
        }        
        else
        {
            //Client requested close so do not try to reconnect
        }
    }

В Вашем коде "establishConnection", Вы тогда реализовали бы while(!initialized) конструкция, которая содержит попытку/выгоду в нем. Пока Вы не уверены, что соединились и подписались правильно, останьтесь в цикле с условием продолжения, ловя все JMS/Naming/etc. исключения.

Мы использовали этот метод в течение многих лет с JBossMQ, и он работает отлично. У нас никогда не было проблемы с нашими клиентами JMS, не снова соединяющимися после возврата JBossMQ или потери нашего сетевого соединения.

10
ответ дан 1 December 2019 в 21:25
поделиться

Совет от личного опыта. Обновление JBoss Обмен сообщениями . я видел его в производстве в течение 4 месяцев без проблем. Это имеет полностью прозрачную обработку отказа - среди многих других функций.

кроме того, если Вы действительно идете с Spring, быть очень осторожны с JmsTemplate.

1
ответ дан 1 December 2019 в 21:25
поделиться

Я настоятельно рекомендовал бы, чтобы Вы использовали абстракции Spring для JMS, такие как MessageListenerContainer для контакта с повторным соединением, транзакциями и объединяющий для Вас. Просто необходимо предоставить MessageListener и настроить MessageListenerContainer с ConnectionFactory, и контейнер делает остальных.

9
ответ дан 1 December 2019 в 21:25
поделиться

Если Вы - просто слушатель и делаете никакой другие вызовы JMS кроме установления соединения, то "onException () обработчик" ответ корректен.

, Если Вы делаете какие-либо вызовы JMS в своем коде, просто с помощью onException () обратный вызов не достаточен. Проблемы передаются от поставщика JMS до приложения или через исключение на вызове метода JMS или через onException () обратный вызов. Не оба.

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

6
ответ дан 1 December 2019 в 21:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: