0

我正在使用 Java 和 Qpid JMS 0.23 对 pub/sub 进行测试。

我在 SB 中创建了一个名为“test.topic”的主题。

我可以从测试应用程序向主题发布消息,但是当尝试订阅(动态创建订阅)时,它会失败并出现异常:

javax.jms.InvalidDestinationException:找不到消息传递实体“mynamespace:topic:test.topic~15|DurableSubscriber2”。TrackingId:12ecc2a3-f8f3-42a3-8bd5-ad5d9823c367_B20, SystemTracker:mynamespace:topic:test.topic~15|DurableSubscriber2, Timestamp:8/8/2017 12:13:31 PM TrackingId:7e0d46404c8c45f39bfftff21b77c7a140_G /8/2017 12:13:31 PM [条件 = amqp:not-found]

一些代码:

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

IE

<<topic-name>>/Subscriptions/<<subscription-name>>
  • 动态订阅时是否需要一些类似的命名?
4

1 回答 1

0

请参阅Unsupported features and restrictions文档部分How to use the Java Message Service (JMS) API with Service Bus and AMQP 1.0并关注以下选项Temporary destinations

目前不支持临时目的地,即TemporaryQueueTemporaryTopic以及使用它们的QueueRequestorTopicRequestor API。

所以我认为 Azure 服务总线不支持动态创建订阅。

于 2017-08-10T08:32:06.857 回答