2
votes

I am using AMQP to connect azure Service bus with java qpid client along with Spring JMS .

I scaled up service bus to premium tier , as topic is by default partitioned and cannot be modified either from portal or Azure service bus management library I am facing below issue at the start of SimpleMessageListenerContainer.

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]

followed by:-

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]

Please note that Everything seems fine(Producer as well as consumer) when using unpartitioned topic.

I found that now Partitioned entities are supported by AMQP protocol with Azure service bus check Latest added features from service bus documentation.

2

2 Answers

2
votes

You might have used the defaults for the topic creation and Enable partitioning was turned on. Recreate the topic with partitioning turned off, and everything works.

You can follow the example given in the blog,

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

1
votes

There is an Azure offical tutorial for How to use the Java Message Service (JMS) API with Service Bus and AMQP 1.0. I think you can try to integrate the sample code (based on geronimo jms, an implementation of JMS standard) in the tutorial with Spring JMS simply if you are very familiar with spring-jms to connect Azure service bus partitioned topic.