Azure Service bus Queue - JMS消息侦听器调用程序的设置因目标异常

时间:2016-05-04 21:57:59

标签: java spring azure servicebus

我能够连接和使用来自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;
}`

请告知可能出现的问题。

由于

1 个答案:

答案 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。希望它有所帮助。

您能否分享投资问题的关键代码?

如有任何疑虑,请随时告诉我。