首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GemFire中的全局事务

GemFire中的全局事务
EN

Stack Overflow用户
提问于 2017-06-06 20:08:11
回答 1查看 259关注 0票数 0

我使用内存中的GemFire和Cassandra作为真相的来源,发现在下面的场景中很难实现全局事务管理器。

使用CacheWriter插入/更新卡桑德拉和GemFire存储库中的数据,以插入/更新GemFire中的记录。如果GemFire或Cassandra出现任何故障,我需要回滚数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-06 21:44:53

这似乎是我以前回答过的一个问题(最近也是这样)。总之,我找不到它。

我使用枢轴全局事务示例和使用SD的HSQLDB DataSource构建了一个DataSource

注意:这个示例是我针对Spring (用于Apache )和Spring数据GemFire (用于关键GemFire)的引用实现(RI)的一部分,它展示了枢轴GemFire/Apache、Spring / Geode和Spring的许多功能特性。本repository-example的重点是使用和扩展将存储库数据访问模式从SD共享应用到Spring上下文中的关键GemFire/Apache。这个例子展示了许多事情(例如CRUD、查询、自定义存储库方法等),基于本地(Cache)和全局(JTA)的事务都是repository-example的一部分。不幸的是,文档在很大程度上仍然是一个WIP。但我确实计划保持这个国际扶轮和最新的例子,因为我也使用代码作为我的会议会谈的基础。不管怎样..。

虽然此示例将关键的GemFire与关系数据库管理系统(即HSQLDB)结合在一起,但可以将HSQLDB替换为。所需要的就是数据源/存储必须符合JTA。

这个示例/测试的配置是这里,并且相当广泛地依赖Spring 这里支持。也就是说,当CLASSPATH (或Spring支持的任何)时,Spring将自动配置基于JTA的事务。当然,您可以使用其他不受支持的JTA事务管理器提供程序,但是您可以自己手动配置它们。如果您愿意,甚至可以手动配置Atomikos,但是Spring的auto-configuration支持非常方便,推荐使用。

唯一需要做的其他事情是让每个数据源都知道JTA事务。

对于关键的GemFire,这需要设置命名上下文(即javax.naming.InitialContext),GemFire本身使用这个上下文来“查找”(按名称)并查找现有的JTA事务。本质上,此bean定义将JTA "TransactionManager“与GemFire在其查找过程中所期望的适当“姓名”相关联。

注意:如果您是在托管环境(例如应用服务器,甚至Tomcat )中,则不需要人工命名上下文,因为它为应用程序提供了命名上下文服务。当然,您需要使用该环境注册JTA事务。但是,由于这是一个独立的(Spring )应用程序,而不是在一个应用程序容器中,所以我在我的模拟/测试命名上下文支持类中使用了Spring的NamingContextBuilderFactoryBean

剩下的就是让您查看Apache /DataStax关于让Apache参与JTA事务的文档。然后,您不需要任何关键的GemFire特定类(例如,CacheWriter)来从GemFire更新Cassandra。使用JTA时,所有符合JTA的数据存储都会保持正确,或者不会。

关于关键的GemFire的全球JTA事务支持的更多信息可以找到这里,特别是相关材料这里

有关Cassandra事务的更多信息可以在启动这里时找到。希望这能有所帮助。

干杯,约翰

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44398949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档