Azure ServiceBus JMS事务支持不明确

问题描述 投票:0回答:1

我正在研究连接到Azure ServiceBus的Java JMS应用程序。一旦发现支持JMS,我就不会遇到任何问题。但是,当我开始创建连接并添加Spring JmsTransactionManager时,出现一个错误,提示我的Azure订阅为“基础”层,因此不支持事务。我所做的是升级到“标准”层,该错误已解决。这已覆盖here

但是,在测试期间,我不确定它是否按预期运行,并且正在测试行为,与此同时,我被另一个MS documentation弄糊涂,说此JMS over AMQP协议不支持“事务处理的会话”。

问题:

  1. 我是否可以依赖服务总线中的队列,这意味着直到我的事务管理器显式调用COMMIT时,才会从队列中删除该消息。] >>

  2. 任何人都可以声称符合JMS,但同时又说我不支持事务处理会话。

  3. 感谢您的任何答复,因为我很困惑。

    更新:

Spring Boot的Azure服务总线启动程序具有Qpid作为依赖关系,所以这是我在幕后使用的-我首先不知道这一点:

<!--Qpid-->
<dependency>
    <groupId>org.apache.qpid</groupId>
    <artifactId>qpid-jms-client</artifactId>
</dependency>

我正在研究连接到Azure ServiceBus的Java JMS应用程序。一旦发现支持JMS,我就不会遇到任何问题。但是,当我开始创建连接并添加Spring ...

azure jms azureservicebus azure-servicebus-queues qpid
1个回答
0
投票

当前没有针对AMQP上的分布式(XA)事务的规范,因此Qpid JMS客户端不提供XA ConnectionFactory实现,因此,如果您使用该实现,那么可以肯定的是,您将不会获得对分布式事务的任何支持。

Qpid JMS客户端本身确实实现了本地事务,因此在这种意义上,您可以使用标准的本地事务JMS会话,但是MS可能已通过spring boot bit禁用了该功能,以劝阻人们不要将其用作本地事务的好处。相对于使用Spring的人们来说,这是很小的,而实际上却没有的人可能会认为他们正在参与较大的分布式交易。

© www.soinside.com 2019 - 2024. All rights reserved.