Подтверждение издателя даст вам ответ «да или нет» от брокера, когда вы публикуете сообщение, указывающее, было ли сообщение успешно помещено в очередь во всех связанных очередях (на момент публикации). Подтверждение выдается для каждого сообщения, которое обрабатывает брокер, или (в соответствии со спецификацией) брокер может выдать «пакетное» подтверждение, которое указывает, что все сообщения, кроме указанного в подтверждении, были обработаны. Я лично не знаю, что это делает брокер;Я думаю, что он просто выдает одно подтверждение на сообщение.
Используя эту семантику, допустим, у вас есть 10 сообщений для публикации. Брокер принимает первые 9, но не может принять 10 (возможно, одна из очередей заполнена). Остальные 9 сообщений по-прежнему помещены в очередь.
Транзакционный позволяет отправить «все или ничего». В приведенном выше сценарии, если вы публикуете все 10 сообщений как часть транзакции, но 10-е не удается, вы можете прервать транзакцию, и брокер будет действовать так, как если бы ни одно из сообщений не было опубликовано вообще. Эта возможность достигается за счет производительности ( в соответствии с документацией работает до 250 раз медленнее при работе в транзакционном режиме).
Транзакционные подтверждения также возможны -Вы можете ack несколько сообщений в рамках одной транзакции.