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

Spring jms ListenerContainer与AMQP使用Qpid客户端抛出异常,同时连接到Azure服务总线分区主题

羊柏
2023-03-14

我使用AMQP连接Azure服务总线与java qpid客户端以及Spring JMS。

我将服务总线扩展到了高级层,因为主题在默认情况下是分区的,不能从门户或Azure服务总线管理库进行修改,我在SimpleMessageListenerContainer的开头遇到了以下问题。

javax。jms。JMSException:无法为实体类型订阅服务器打开主题客户端。TrackingId:74bcb8d5-5d05-4239-9dad-CB2133015C29B19,SystemTracker:servicebus主题:主题:哑管~127 |接收器阿尔法测试处理订阅,时间戳:2017年5月22日2:40:45下午TrackingId:F57FCFB24DC47BF9EF3968BDFA99666_G17,SystemTracker:gateway2,时间戳:2017年5月22日2:40:44下午[条件=amqp:不允许]

接着是:-

2017-05-22 16:40:44.772  INFO 14268 --- [windows.net:-1]] o.a.q.j.s.SaslMechanismFinder            : Best match for SASL auth was: SASL-PLAIN
2017-05-22 16:40:45.376  INFO 14268 --- [windows.net:-1]] o.a.q.j.JmsConnection                    : Connection ID:c27375bc-e3e2-41a9-90a4-8e1bb1e17f8a:1 connected to remote Broker: amqps://servicebus-topic.servicebus.windows.net?amqp.idleTimeout=500000

2017-05-22 16:40:45.377  INFO 14268 --- [           main] o.s.j.c.CachingConnectionFactory         : Established shared JMS Connection: org.apache.qpid.jms.JmsConnection@805849

2017-05-22 16:40:46.499  WARN 14268 --- [windows.net:-1]] o.a.q.j.p.a.b.AmqpResourceBuilder        : Open of resource:(JmsConsumerInfo: { ID:c27375bc-e3e2-41a9-90a4-8e1bb1e17f8a:1:1:1, destination = dumb-pipe }) failed: Cannot open a Topic client for entity type Subscriber. TrackingId:74bcb8d5-5d05-4239-9dad-cb2133015c29_B19, SystemTracker:servicebus-topic:topic:dumb-pipe~127|sink-alpha-test-processing-subscription, Timestamp:5/22/2017 2:40:45 PM TrackingId:f572fcfb24dc47bf9ef3968bdfa99666_G17, SystemTracker:gateway2, Timestamp:5/22/2017 2:40:44 PM [condition = amqp:not-allowed]

2017-05-22 16:40:46.520  WARN 14268 --- [           main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'domainListenerContainer' defined in class path resource [ServiceBusConfig.class]: Invocation of init method failed; nested exception is org.springframework.jms.UncategorizedJmsException: Uncategorized exception occurred during JMS processing; nested exception is javax.jms.JMSException: Cannot open a Topic client for entity type Subscriber. TrackingId:74bcb8d5-5d05-4239-9dad-cb2133015c29_B19, SystemTracker:servicebus-topic:topic:dumb-pipe~127|sink-alpha-test-processing-subscription, Timestamp:5/22/2017 2:40:45 PM TrackingId:f572fcfb24dc47bf9ef3968bdfa99666_G17, SystemTracker:gateway2, Timestamp:5/22/2017 2:40:44 PM [condition = amqp:not-allowed]

请注意,当使用未分区的主题时,一切看起来都很好(生产者和消费者)。

我发现AMQP协议支持现在已分区的实体,Azure service bus check是service bus文档中最新添加的功能。

共有2个答案

丌官嘉良
2023-03-14

有关如何将Java消息服务(JMS)API与服务总线和AMQP 1.0配合使用的Azure官方教程。如果你非常熟悉sping-jms来连接Azure服务总线分区主题,我认为你可以尝试将教程中的示例代码(基于geronimo jms,JMS标准的实现)与Spring JMS集成在一起。

洪凯定
2023-03-14

您可能已经为主题创建使用了默认值,并且启用分区已打开。关闭分区重新创建主题,一切正常。

你可以按照博客中给出的例子,

http://ramblingstechnical.blogspot.in/p/using-azure-service-bus-with-spring-jms.html

 类似资料:
  • 我使用此url中的示例http://azure.microsoft.com/en-us/documentation/articles/service-bus-java-how-to-use-jms-api-amqp/.我有两个问题: 1、ACS或SAS 连接URL, 用户名和密码来自ACS身份验证,但Azure服务总线已将其身份验证从ACS更改为SAS。它是否也支持SAS身份验证?就像用户名是SA

  • 我的客户。NET核心应用程序使用AMQP。Net Lite库与Azure Service Bus配合使用。当service bus命名空间中的主题未分区时(禁用启用分区),一切正常-我能够连接并创建ReceiverLink对象来接收消息。 但是,一旦主题被分区(打开),我在对象创建后立即收到以下错误。错误描述是:“无法为实体类型订阅者打开主题客户端。” 错误代码转换为AMQP映射为AMQP:不允许

  • 我正在尝试使用hazelcast v3。2.4(服务器和客户端上的版本相同)。服务器(我可以安装的简单实现)正在服务器上运行。客户端尝试连接到远程服务器-服务器打印身份验证请求,但我收到以下日志输出(包括异常)-关于我可以做什么不同的想法(复制日志输出和配置文件)。我正在尝试通过TCP/IP进行连接,我检查了网络连接——我没有看到任何东西阻止连接。 堆栈中提到的代码行: 配置 日志输出 服务器输出

  • 很多关于Service Bus的资料都提到它使用AMQP 1.0。然而,我发现的示例使用了隐藏AMQP层的库,因此不清楚如何使用通用AMQP 1.0客户端并执行此服务总线示例中列出的操作 在几种情况下,能够使用独立的AMQP客户端而不是提供的更高级别客户端可能很重要。例如,提供的客户端可能在某些平台上不可用,或者通用客户端可能为特定问题提供更合适的工作方式。 可能相关问题

  • 使用Azure Service Bus-Topics,我想实现一个解决方案,其中一旦生产者将消息发送到Topic,消息就会被发送/通知给最终消费者(比如队列)。 我理解主题作为pub/sub模型工作,其中订阅者需要从订阅中读取消息。但是我正在寻找一种类似队列的工作方法(当接收到任何消息时,它会触发web作业/服务)。 首先,我想知道服务巴士的主题是否是正确的选择?接下来,如果可能的话,实现一个变通

  • 我一直在尝试创建一个客户端来连接我的Azure服务总线队列。我一直在参考此文档: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-java-how-to-use-queues#send-消息到队列。 我的代码: 在创建客户端时,我遇到以下错误: 通用域名格式。微软蔚蓝色的服务总线。原语。Service