Java 如何通过使用SpringJMS引发异常来删除MQ中的消息

Java 如何通过使用SpringJMS引发异常来删除MQ中的消息,java,spring,jms,Java,Spring,Jms,我正在使用SpringJMS messageListenerContainer来侦听消息。当发生错误时,我想抛出一个异常并停止从MQ删除消息。我只想对MQ使用自动确认会话。我怎样才能做到这一点?应该引发什么样的异常,以便消息不会从MQ中删除并再次重新发送?我们的项目中也有类似的要求。虽然我们使用IBMWMQ,但这将让您了解如何实现这一点 阅读来自MQ的消息,如#Queue1。我所说的阅读是指提取(阅读和删除),而不仅仅是浏览信息 在处理消息时,如果发生任何错误,则将消息推送到其他队列,如#Que

我正在使用SpringJMS messageListenerContainer来侦听消息。当发生错误时,我想抛出一个异常并停止从MQ删除消息。我只想对MQ使用自动确认会话。我怎样才能做到这一点?应该引发什么样的异常,以便消息不会从MQ中删除并再次重新发送?

我们的项目中也有类似的要求。虽然我们使用IBMWMQ,但这将让您了解如何实现这一点

  • 阅读来自MQ的消息,如#Queue1。我所说的阅读是指提取(阅读和删除),而不仅仅是浏览信息
  • 在处理消息时,如果发生任何错误,则将消息推送到其他队列,如#Queue2
  • 创建一个路由器,将所有消息从#Queue2传送到#Queue1。或者,您可以在处理#Queue1上的消息之前检查并处理#Queue2

  • 这就是在出现错误或异常时,我们如何一次又一次地重播同一消息。

    使用
    自动确认
    模式,消息在发送到应用程序后会自动从队列中删除

    使用@user2004685建议的中间队列需要额外的管道。我建议使用事务处理会话。接收事务下的消息,如果处理消息时出现任何错误,请调用
    rollback()
    ,以便可以重新传递消息