【发布时间】:2019-07-29 01:09:23
【问题描述】:
我正在创建一个包含多个消费者的主题,每个消费者都由一个 clientId 标识。 我看到的行为是:
- 有消息进来
- 我在我的一个消费者中引发了运行时异常
- 我希望该消费者再次尝试使用相同的消息,但它会直接转到下一条消息。
有没有办法在 3 次尝试后停止消耗?
【问题讨论】:
标签: spring spring-boot jms activemq spring-jms
我正在创建一个包含多个消费者的主题,每个消费者都由一个 clientId 标识。 我看到的行为是:
有没有办法在 3 次尝试后停止消耗?
【问题讨论】:
标签: spring spring-boot jms activemq spring-jms
您可以创建一个事务处理的 JMS 会话:
// create JMS Session from JMS Connection
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
并使用Session.rollback() 方法表明您需要再次查看该消息:
public void onMessage(Message message)
{
msgsReceived++;
System.err.println("received: " + message);
if( msgsReceived<3 ) { // simulating an error case
session.rollback();
} else {
session.commit();
}
然后你应该会看到这条消息 3 次,直到你最后一次提交它。
【讨论】: