我正在开发连接到Azure ServiceBus的Java JMS应用程序。一旦我发现JMS被支持,我就没有料到会有任何问题。但是,当我开始创建连接并添加SpringJMStransActionManager
时,我得到了一个错误,它说我的Azure订阅是“基本”层,因此不支持事务。我所做的是升级到“标准”层,错误得到了解决。这里涵盖了这个。
然而,在测试过程中,我不确定它是否按预期工作,我正在测试行为,同时我被另一个MS文档弄糊涂了,该文档说这个JMS over AMQP协议不支持“事务性会话”。
问题:
>
我是否可以依赖服务总线中的队列将被事务处理,这意味着在事务管理器显式调用COMMIT之前,消息不会从队列中移除?
更新:
Spring Boot的Azure Service Bus starter将Qpid作为依赖项,所以这就是我在下面使用的--我最初并不知道这一点:
<!--Qpid-->
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-jms-client</artifactId>
</dependency>
目前还没有针对AMQP上的分布式(XA)事务的规范,因此,Qpid JMS客户机不提供XA ConnectionFactory实现,因此,如果您使用该实现,那么您肯定不会得到对分布式事务的任何支持。
Qpid JMS客户机本身确实实现了本地事务,所以从这个意义上说,您可以使用标准的本地事务JMS会话,但是MS可能通过Spring Boot位禁用了该会话,以阻止用户使用它,因为本地事务的好处非常小,特别是对于使用spring的用户来说,他们可能认为自己参与了一个更大的分布式事务,而实际上他们并没有参与。
我们继续上一章节的内容,大家应该记得我们 Lua 代码中是如何完成 ngx_postgres 模块调用的。我们把他简单改造一下,让他更接近真实代码。 local json = require "cjson" function db_exec(sql_str) local res = ngx.location.capture('/postgres',
Hibernate会支持MongoDB事务吗? MongoDB4.0增加了对多文档ACID事务的支持。但是Hibernate仍然不支持这一点,我不能简单地使用@transactional(Grails framework)注释为MongoDB操作添加事务性行为。我得自己写事务性管理代码。有没有人有更好的解决方案或者什么时候Hibernate支持它?谢谢! 引自Hibernate:MongoDB不支
我将spring应用程序连接到smartbaer servicev,在那里创建了虚拟数据源(Postgres)。 驱动程序类: 连接字符串(本地servicev虚拟服务器url): 应用程序.属性:- spring.datasource.driver-class-name=com.smartbear.servicev.jdbc.driver.jdbcvirtdriver spring.dataso
介绍 Session非常类似于SqlRunner,差别是Session对象中只有一个Connection,所有操作也是用这个Connection,便于事务操作,而SqlRunner每执行一个方法都要从DataSource中去要Connection。样例如下: Session创建 与SqlRunner类似,Session也可以通过调用create //默认数据源 Session session =
问题内容: JTA为什么不支持嵌套事务?是因为实现它们的复杂性(我对此表示怀疑)还是某些设计原则? 问题答案: (正如@Piotr Nowicki指出的那样,JTA 确实 允许嵌套事务,但这不是强制性的可选操作。) 为什么?这是无法确定地回答的问题之一,除非您是做出决定时“在房间里”的人之一。 将嵌套事务作为规范的一部分包括在内可能是固有的复杂性。或当时明显的复杂性;即他们不知道他们知道如何做一个
据我所知,当您尝试在提交前一个事务之前开始一个事务时,会发生这种异常。然而,我不明白为什么在我的情况下会有这种例外。 我有一个Web应用程序与以下servlet: 这是我的Compte对象: 这是我的DAO的接口: 这就是它的实施: 另外,这是我的Spring配置: 关联的应用程序。属性文件包含以下行: 最后,我有以下servlet过滤器,从这里开始事务: 这是在网络上映射的。如下所示的xml文件