Я работаю над Java приложением JMS, подключающимся к Azure ServiceBus. Как только я узнал, что JMS поддерживается, я не ожидал никаких проблем. Однако, когда я начал создавать соединения и добавил Spring JmsTransactionManager
, я получил ошибку, в которой говорилось, что моя подписка Azure имеет базовый уровень, и поэтому транзакции не поддерживаются. Я обновился до уровня «Стандарт», и ошибка была устранена. Это покрыто здесь .
Однако во время тестирования я не был уверен, что он работает должным образом, и я тестирую поведение, и в то же время меня смутила другая документация MS о том, что "транзакционные сеансы" не поддерживаются в этом протоколе JMS через AMQP.
Вопрос:
Можно ли рассчитывать, что очередь в служебной шине будет передаваться, что означает сообщение не будет удалено из очереди, пока мой менеджер транзакций явно не вызовет COMMIT?
Как можно требовать соблюдения JMS, но в то же время сказать, что я не поддерживаю транзакционные сеансы.
Спасибо за любой ответ, потому что я в замешательстве.
Обновление:
У стартера Azure Service Bus для Spring Boot есть Qpid в качестве зависимости вот что я использую под капотом - я не знал об этом первым:
<!--Qpid-->
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-jms-client</artifactId>
</dependency>