Поведение Spring DLMC и JMSTemplate при использовании транзакций
У меня есть несколько вопросов, касающихся транзакций в DMLC и JMSTemplate.
Spring DMLC получает сообщения асинхронно, используя обратные вызовы, если мы не используем транзакции?
DMLC также получает сообщения асинхронно при использовании транзакционного сеанса. (установка sessionTransacted в true). Каково поведение после установки sessionTransacted в true?
3. Какая разница между режимами AUTO_ACK и SESSION_TRANSACTED с точки зрения потребителя. В режиме AUTO_ACK DMLC отправляет подтверждение брокеру после получения сообщения. Аналогичным образом в режиме SESSION_TRANSACTED DMLC фиксируется после каждого полученного сообщения. Какой способ лучше с точки зрения производительности и в чем разница?
4 Всегда ли синхронная отправка сообщений JMSTemplate. Даже если он отправляет непостоянные сообщения в тему?
Спасибо анудж
1 ответ
DMLC не рекомендуется использовать без транзакций; используйте SMLC.
При использовании транзакций контейнер фиксирует сеанс при возврате потока. Да, они обрабатываются асинхронно.
При автоматическом подтверждении и DMLC сеанс подтверждается, как только происходит receive() (и до вызова слушателя) - следовательно, это действительно лучше для транзакций.
- Это функция клиентской библиотеки JMS, но обычно да; особенно если используются транзакции.