JMS消息再传递

最后发布: 2020-07-09


问题

我有一个有一个生产者和两个消费者的队列,使用的是 CLIENT_ACKNOWLEDGE. 两个消费者共享连接,但他们生活在不同的线程中,所以每个人都使用自己的会话。

如果消费者A不确认最后收到的消息,会发生什么情况?在哪种情况下,消息会被消费者B重新发送和消费?是在消费者A使用的会话关闭的时候吗?我需要在JMS提供者上做一些配置来规定在这种情况下会发生什么吗?

java rabbitmq jms activemq messaging
回答

我认为这种情况在JMS规范中并没有直接解决,所以答案最终取决于你使用的是什么JMS代理。然而,在过去的工作中,我曾在多个JMS经纪商工作过,我想说的是,一般来说,经纪商向消费者发送的任何消息,如果还没有得到消费者的确认,就会被取消回经纪商,一旦有关的消费者被关闭,就会被重新发送。