Как не использовать сообщение JMS при возникновении ошибки - PullRequest
0 голосов
/ 07 марта 2019

Я создаю тему с несколькими потребителями, каждая из которых идентифицируется по идентификатору клиента. Поведение, которое я вижу:

  • Сообщение приходит
  • Я выбрасываю исключение времени выполнения в одном из моих потребителей
  • Я бы хотел, чтобы этот потребитель попытался снова использовать то же сообщение, но оно сразу переходит к следующему.

Есть ли способ остановить потребление после 3 попыток, например?

1 Ответ

2 голосов
/ 07 марта 2019

Вы можете создать транзакционный сеанс 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 раза, пока вы не в последний раз его зафиксировали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...