Распределенная тема Weblogic jms

Используя java-приложение, я пытаюсь создать надежную подписку на единую распределенную тему jms.

Сервер jms работает на weblogic 10.3.5 и тема распределена на 2 сервера.

Если я разрабатываю bean-компонент, управляемый сообщениями, он работает. У меня есть постоянная подписка на обоих серверах с одинаковым именем подписки.

С автономным java-приложением я могу выполнить работу с обычной темой (не распределенной). Но не могу заставить его работать с распределенной темой.

InitialContext ic = new InitialContext();
TopicConnectionFactory connectionFactory = (TopicConnectionFactory) ic.lookup("myConnectionFactory");
TopicConnection connection = connectionFactory.createTopicConnection();
connection.setClientID("testclient");
TopicSession session = connection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);
TopicSubscriber subscriber;
Topic topic1 = (Topic) ic.lookup("jmsserver1@myTopic");
Topic topic2 = (Topic) ic.lookup("jmsserver2@myTopic");
subscriber = session.createDurableSubscriber(topic1,"testSubscription","",false);
subscriber = session.createDurableSubscriber(topic2,"testSubscription","",false);

Дает мне

Exception in thread "main" weblogic.jms.common.JMSException: [JMSClientExceptions:055037]Subscription testSubscription is in use

В консоли weblogic создается первая подписка testSubscription на myJmsModule!jmsserver1@myTopic не вторая.

Что я могу сделать ?


person tweetysat    schedule 12.11.2014    source источник


Ответы (2)


Вам придется удалить долговременную подписку вручную, и WLS не удалит ее автоматически.

https://docs.oracle.com/cd/E17904_01/web.1111/e15493/dist_topics.htm#WLMDB10013

Настройка автоматического удаления долговременных подписок: -

Вы можете настроить MDB для автоматического удаления постоянной подписки на тему, когда MDB не развертывается или удаляется с сервера. Чтобы настроить MDB для автоматического удаления устойчивых подписок на темы, установите для параметра durable-subscription-deletion значение True. По умолчанию для параметра durable-subscription-delete установлено значение False.

По умолчанию это значение равно false, поэтому постоянный подписчик не удаляется автоматически.

person Anish V P    schedule 13.11.2014

Вам нужно изменить ConnectionFactory через консоль администратора weblogic, чтобы создать общие соединения.

Client ID Policy: CLIENT_ID_POLICY_UNRESTRICTED
Subscription Sharing Policy:Sharable

https://docs.oracle.com/cd/E57014_01/wls/WLACH/pagehelp/JMSjmsconnectionjmsconnectionfactoryconfigclientparamstitle.html

person dan carter    schedule 29.07.2015