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

У меня есть несколько вопросов, касающихся транзакций в DMLC и JMSTemplate.

  1. Spring DMLC получает сообщения асинхронно, используя обратные вызовы, если мы не используем транзакции?

  2. DMLC также получает сообщения асинхронно при использовании транзакционного сеанса. (установка sessionTransacted в true). Каково поведение после установки sessionTransacted в true?

3. Какая разница между режимами AUTO_ACK и SESSION_TRANSACTED с точки зрения потребителя. В режиме AUTO_ACK DMLC отправляет подтверждение брокеру после получения сообщения. Аналогичным образом в режиме SESSION_TRANSACTED DMLC фиксируется после каждого полученного сообщения. Какой способ лучше с точки зрения производительности и в чем разница?

4 Всегда ли синхронная отправка сообщений JMSTemplate. Даже если он отправляет непостоянные сообщения в тему?

Спасибо анудж

1 ответ

DMLC не рекомендуется использовать без транзакций; используйте SMLC.

При использовании транзакций контейнер фиксирует сеанс при возврате потока. Да, они обрабатываются асинхронно.

При автоматическом подтверждении и DMLC сеанс подтверждается, как только происходит receive() (и до вызова слушателя) - следовательно, это действительно лучше для транзакций.

  1. Это функция клиентской библиотеки JMS, но обычно да; особенно если используются транзакции.
Другие вопросы по тегам