当前位置: 首页 > 知识库问答 >
问题:

使用Azure服务总线的Java(Qpid JMS)持久订阅

穆博简
2023-03-14

我正在使用Java和Qpid JMS 0.23测试发布/订阅。

我在SB中创建了一个名为“测试主题”的主题。

我可以从测试应用程序向主题发布消息,但在尝试订阅(动态创建订阅)时失败,例外情况:

javax.jms.InvalidDestinationException:找不到消息传递实体mynamesspace:主题:test.topic~15|DurableSubscriber2。TrackingId:12ecc2a3-f8f3-42a3-8bd5-ad5d9823c367_B20,SystemTracker:mynamesspace:主题:test.topic~15|DurableSubscriber2,时间戳:8/8/2017 12:13:31PM TrackingId:7e0d46404c8c45f39bffff2b77c7a140_G21,SystemTracker:网关6,时间戳:8/8/2017 12:13:31PM[条件=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");

如果我在主题上创建一个名为“sub1”的静态订阅,它将接收已发布的消息。检索时,我需要将主题定义为:

test.topic/Subscriptions/sub1

即。

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

共有1个答案

臧俊杰
2023-03-14

请参阅文档的“如何将Java消息服务(JMS)API与Service Bus和AMQP 1.0一起使用”一节中的“不支持的特性和限制”,并重点介绍以下选项“临时目的地”。

目前不支持临时目的地,即TemporaryQueue、TemporaryTopic以及使用它们的QueueRequestor和TopicRequestor API。

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

 类似资料:
  • 来自第三次订阅的消息会发生什么情况,是否会在TTL之后发送到死信队列 有没有办法找出消息未被使用的订阅

  • 我有一个名为“状态更改”的Azure服务总线主题,它有一个名为“混响”的订阅。我正在尝试使用设置订阅主题的方法,但出现错误: 我一直在使用这篇博客文章来尝试让一切正常运行:http://ramblingstechnical.blogspot.co.uk/p/using-azure-service-bus-with-spring-jms.html 我可以使用向主题添加消息,并使用Azure文档中概述

  • 我尝试将Azure服务总线与ApacheQPID和Spring与事务集成。 但Azure服务总线AMQP实现似乎不支持事务。这是真的吗?我没有找到相关信息。 这是我的JMS配置 这是我的spring集成片段: 它与session transact=“false”配合使用,但与session transact=“true”配合使用时会产生错误: QPID跟踪

  • 我想将一个小的JSON消息放入中。消息将具有附加到它的“ProviderID”属性,并且根据筛选规则,该消息将被筛选到特定于提供程序的上 但是,我似乎无法在上指定共享访问策略,以限制第三方提供商仅连接到他们自己的 我假设应该在订阅上设置以便将这些消息发送到另一个并在那里应用特定于提供程序的安全性,这样做是否正确。 或者有其他/更好的/推荐的方法来做这件事。

  • null 输出 谁能解释一下为什么会这样吗?这对我来说有点迷惑?

  • 我在Azure服务总线中构建了一个支持多队列订阅的服务,但是我正在得到一些奇怪的行为。 我的subscription singleton类有一个如下所示的方法: 其思想是,您为特定类型的消息订阅Azure Service Bus,该消息直接对应于队列。在订阅中,传入一个委托以了解如何处理消息。 谁能告诉我,我需要做什么不同的,以确保消费者拥有的消息,直到完成?