Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Storm拓扑事务和数据库事务_Java_Real Time_Apache Storm - Fatal编程技术网

Java Storm拓扑事务和数据库事务

Java Storm拓扑事务和数据库事务,java,real-time,apache-storm,Java,Real Time,Apache Storm,我使用的是storm,一个拓扑有一个螺栓“A”,它在数据库中插入记录并发送到另一个螺栓“B”。如果一个元组bolt“B”执行失败,当bolt“a”执行时,如何回滚对数据库产生影响的元组?有人能帮我吗?THX要了解storm是如何处理交易的,请查看他们的。它写得很好,应该给你一个很好的概念 现在,您不必使用普通的storm来管理事务,而是可以在storm的基础上构建顶级抽象,从而更好地实现事务功能。文档很好,详细描述了方法 还要了解storm是如何保证消息被完全处理的。您需要使用storm之上的抽

我使用的是storm,一个拓扑有一个螺栓“A”,它在数据库中插入记录并发送到另一个螺栓“B”。如果一个元组bolt“B”执行失败,当bolt“a”执行时,如何回滚对数据库产生影响的元组?有人能帮我吗?THX

要了解storm是如何处理交易的,请查看他们的。它写得很好,应该给你一个很好的概念

现在,您不必使用普通的storm来管理事务,而是可以在storm的基础上构建顶级抽象,从而更好地实现事务功能。文档很好,详细描述了方法


还要了解storm是如何保证消息被完全处理的。

您需要使用storm之上的抽象来保证只处理一次。这能保证元组只在数据库中插入一次吗?也就是说,您能确保每个螺栓只执行每个元组一次吗?或者“仅一次”仅仅意味着一旦一个元组被所有螺栓确认,它将永远不会被重放?@JimGarrison yep,如果B失败,元组将从Spoute重试,Trident保证元组不能在a中再次插入记录?但在重试之前,数据库可能有脏数据?如果需要跨多个螺栓确保数据库一致性(即事务),我认为Storm可能不够。我不是风暴专家,但我读到的所有内容都表明,更新数据库的螺栓必须是事务自包含的。@JimGarrison您可以通过在数据库上构建自己的事务层来解决这些问题。我已经多次这样做,以确保拓扑中多个螺栓之间的数据库一致性。