如何在发生错误时不使用 JMS 消息
How to not consume JMS message when an error happen
我正在创建一个包含多个消费者的主题,每个消费者都由一个 clientId 标识。
我看到的行为是:
- 有消息进来
- 我在我的一个消费者中抛出运行时异常
- 我希望这个消费者尝试再次消费同一条消息,但它会直接进入下一条。
有没有办法在尝试 3 次后停止消费?
您可以创建事务处理的 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 次,直到您最后一次提交它。
我正在创建一个包含多个消费者的主题,每个消费者都由一个 clientId 标识。 我看到的行为是:
- 有消息进来
- 我在我的一个消费者中抛出运行时异常
- 我希望这个消费者尝试再次消费同一条消息,但它会直接进入下一条。
有没有办法在尝试 3 次后停止消费?
您可以创建事务处理的 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 次,直到您最后一次提交它。