Приемник сообщений Spring в режиме Client_Acknowledge подтверждает сообщение, когда клиент вызывает message.acknowledge ().
Однако, если после успешного выполнения сообщения потребитель не находит подтверждения со стороны клиента, Spring предполагает, что выполнение было успешным, и подтверждает сообщение.
Если в какой-то момент потребитель получил исключение при обработке сообщения, слушателю Spring необходимо знать, что произошло какое-то исключение, чтобы повторно доставить сообщение в очередь, чтобы другой потребительский поток мог его забрать. Если вы перехватываете исключение, Spring предполагает, что все было обработано и выполнение прошло гладко, и, следовательно, подтверждает сообщение.
Слушатель сообщений Spring позволяет только генерировать исключение JMS из слушателя onMessage. Поймав ваше пользовательское исключение и сгенерировав исключение JMS из прослушивателя (после регистрации ошибки для дальнейшего использования), вы сможете повторно доставить сообщение.