Использование сообщения Spring DMLC: auto_ack vs Transacted Session

У меня есть пара вопросов относительно весеннего DMLC.

  1. Почему поставщикам Spring рекомендуется использовать DMLC(контейнер прослушивателя сообщений по умолчанию) с транзакциями?

Поведение Spring DLMC и JMSTemplate при использовании транзакций

  1. На стороне потребителя, если я использую DMLC с sessionTransacted=false, он будет использовать режим ACTO_ACK по умолчанию. В чем разница между обоими случаями (транзакции и AUTO_ACK)? Насколько я понимаю, процесс подтверждения похож на меня в обоих случаях:

Транзакция: как только получатель получит сообщение, брокеру будет отправлено подтверждение, и только брокер будет считать сообщение доставленным.

Auto_Ack: здесь также для каждого сообщения, полученного потребителем, потребителю будет отправлено подтверждение брокеру.

Пожалуйста, поправьте меня, если я ошибаюсь.

Спасибо,

Ануй

1 ответ

С помощью DMLC и автоматического подтверждения сообщение подтверждается сразу же после его получения (и до вызова слушателя).

В случае транзакции сеанс фиксируется после вызова слушателя; и, если слушатель выдает исключение (или система теряет питание), транзакция откатывается (сообщение перезаписывается).

Другие вопросы по тегам