Подтвердить что ты не робот

JMS AUTO_ACKNOWLEDGE, когда он подтвержден?

Я попытался это сделать Google, но не был успешным. Если я использую AUTO_ACKNOWLEDGE, и у меня есть клиентский клиент, написанный на Java, когда сообщение подтверждено? Я использую MessageListener, который содержит метод onMessage. Возвращается ли подтверждение на сервер до onMessage или после завершения onMessage или в какой-то другой точке? Заранее благодарим за любую помощь, которую любой может предоставить!

4b9b3361

Ответ 1

Пожалуйста, проверьте один.

В режиме AUTO_ACKNOWLEDGE подтверждение всегда является последним, что происходит неявно после возврата обработчика onMessage(). Клиент, получающий сообщения, может получить более тонкий контроль над доставкой гарантированных сообщений, указав режим CLIENT_ACKNOWLEDGE на сеансе потребления.

Использование CLIENT_ACKNOWLEDGE позволяет приложению осуществлять управление при отправке подтверждения. Например, приложение может подтвердить сообщение, тем самым освободив поставщика JMS от его обязанности, и выполнить дальнейшую обработку данных, представленных сообщением. Ключом к этому является метод accept() для объекта Message, как показано в листинге 1.

Метод acknowledge() информирует поставщика JMS о том, что сообщение было успешно получено потребителем. Этот метод выдает исключение клиенту, если во время процесса подтверждения происходит сбой поставщика. Ошибка поставщика приводит к тому, что сообщение сохраняется на сервере JMS для повторной доставки.

Ответ 2

CLIENT_ACKNOWLEDGE
В этом режиме подтверждения клиент подтверждает принятое сообщение, вызвав метод подтверждения сообщения.

Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
...
msg = (TextMessage) consumer.receive();
//acknowledge
msg.acknowledge();

AUTO_ACKNOWLEDGE
В этом режиме подтверждения сеанс автоматически подтверждает получение клиентом сообщения либо при успешном возврате сеанса из полученного вызова, либо когда прослушиватель сообщений, вызванный сеансом для обработки сообщения, успешно возвращается.

Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

источник
Лучший пример