我能够连接和使用来自Azure服务总线队列的消息。但是在消息处理过程中随机出现以下错误。出现错误后,看起来消息没有被进一步消耗,或者它们被推送到DLQ。重新启动侦听器应用程序会导致出现相同的异常。
我正在使用带有Apache Qpid的Spring DefaultMessageListenerContainer
2016-05-05 01:49:36.303 WARN 14716 - [nerContainer-61] o.s.j.l.DefaultMessageListenerContainer:JMS消息的设置 监听器调用器失败的目的地 'org.apache.qpid.amqp_1_0.jms.impl.QueueImpl@5f61cba7' - 试图 恢复。原因:等待附加超时
未知端点 传输{手柄= 0,deliveryId = 36,deliveryTag = P \ XB8)笔\ xd9 \ XEA%A \ X95 \ xe5Fj] \ X91 \ X00 \ X15,MessageFormat中= 0,更=假,batchable =真} 未知端点 传输{手柄= 0,deliveryId = 36,deliveryTag = \ XDC \ x9b \ x9d \ XF5 \ x817 \ x9bO \ X97 \ X19 \ xeam&LT; \ X00 \ X81,MessageFormat中= 0,更=假,batchable =真} < / p>
javax.jms.IllegalStateException:已关闭 org.apache.qpid.amqp_1_0.jms.impl.SessionImpl.checkClosed(SessionImpl.java:326) 在 org.apache.qpid.amqp_1_0.jms.impl.SessionImpl.getTransacted(SessionImpl.java:222) 在 org.springframework.jms.listener.AbstractMessageListenerContainer.commitIfNecessary(AbstractMessageListenerContainer.java:757) 在 org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:665) 在 org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:315) 在 org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:253) 在 org.springframework.jms.listener.DefaultMessageListenerContainer $ AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1158) 在 org.springframework.jms.listener.DefaultMessageListenerContainer $ AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1052) 在java.lang.Thread.run(未知来源)
更新:
`public DefaultMessageListenerContainer messageListenerContainer() throws NamingException {
DefaultMessageListenerContainer messageListenerContainer = new DefaultMessageListenerContainer();
messageListenerContainer.setConnectionFactory(connectionFactory());
Destination queue = (Destination) context.lookup("STORAGE_NEW_QUEUE");
messageListenerContainer.setDestination(queue);
messageListenerContainer.setConcurrency(concurrency);
messageListenerContainer.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
messageListenerContainer.setCacheLevel(DefaultMessageListenerContainer.CACHE_SESSION);
messageListenerContainer.setErrorHandler(new EDIMessageErrorHandler());
MessageListenerAdapter adapter = new MessageListenerAdapter();
adapter.setDelegate(new EDIMessageListener());
adapter.setDefaultListenerMethod("onMessage");
messageListenerContainer.setMessageListener(adapter);
return messageListenerContainer;
}`
请告知可能出现的问题。
由于
答案 0 :(得分:0)
我不确定是什么原因导致问题没有任何代码。
但是,有一个官方文档Service Bus messaging exceptions
列出了Microsoft Azure Service Bus消息传递API生成的一些异常,Exception types
部分列出了消息传递异常类型及其原因,并提供了建议的操作说明你可以采取。我想你可以参考它来检查你的问题。
根据异常信息Unknown endpoint
,根据我的例外,我认为原因可能在于与QPID的AMQP连接的配置。我搜索了可能的原因,并获得了有用的链接https://mail-archives.apache.org/mod_mbox/qpid-users/201009.mbox/%3CAANLkTimNsHx3BeXCuYxbPOo+_3+vpH-Eu0AQcJfA07Oe@mail.gmail.com%3E。希望它有所帮助。
您能否分享投资问题的关键代码?
如有任何疑虑,请随时告诉我。