如何在发生错误时不使用 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 次,直到您最后一次提交它。