Надежная подписка на Java (Qpid JMS) с служебной шиной Azure

Я тестирую pub/sub, используя Java и Qpid JMS 0.23.

Я создал тему в SB под названием "test.topic".

Я могу публиковать сообщения в теме из тестового приложения, но при попытке подписаться (динамически создавая подписку) происходит сбой, за исключением:

javax.jms.InvalidDestinationException: объект обмена сообщениями 'mynamespace:topic:test.topic~15|DurableSubscriber2' не найден. TrackingId: 12ECC2A3-F8F3-42A3-8BD5-AD5D9823C367_B20, Systemtracker: MyNamespace: Тема: Test.topic ~ 15 | Durablesubscriber2, TimeStamp: 8/8/2017 12:13:31 PM. /8/2017 12:13:31 [условие = amqp: не найдено]

Некоторый код:

env.put("topic.TOPIC", "test.topic");

Context context = new InitialContext(env);

ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("SBCF");
Topic topic = (Topic) context.lookup("TOPIC");

connection = connectionFactory.createConnection("user", "secret");

subscriberSession = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);

subscriber = subscriberSession.createDurableConsumer(topic, "DurableSubscriber2");
  • Можно ли создавать подписки по теме в SB из приложения?

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

test.topic/Subscriptions/sub1

i.e.

<<topic-name>>/Subscriptions/<<subscription-name>>
  • Нужно ли мне иметь какое-то похожее имя при динамической подписке?

person 4integration    schedule 08.08.2017    source источник


Ответы (1)


См. раздел Unsupported features and restrictions документа How to use the Java Message Service (JMS) API with Service Bus and AMQP 1.0 и сосредоточьтесь на параметре Temporary destinations, как показано ниже.

Временные адресаты, например TemporaryQueue, TemporaryTopic, в настоящее время не поддерживаются, как и API QueueRequestor и TopicRequestor, которые используют их.

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

person Peter Pan    schedule 10.08.2017
comment
Да, я обнаружил, что вы правы в том, что он не поддерживается QPid/AMQP 1.0. При необходимости используйте этот API: github.com/Azure/azure-service-bus- Java - person 4integration; 10.08.2017