Java Storm拓扑事务和数据库事务
我使用的是storm,一个拓扑有一个螺栓“A”,它在数据库中插入记录并发送到另一个螺栓“B”。如果一个元组bolt“B”执行失败,当bolt“a”执行时,如何回滚对数据库产生影响的元组?有人能帮我吗?THX要了解storm是如何处理交易的,请查看他们的。它写得很好,应该给你一个很好的概念 现在,您不必使用普通的storm来管理事务,而是可以在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是如何保证消息被完全处理的。您需要使用storm之上的抽象来保证只处理一次。这能保证元组只在数据库中插入一次吗?也就是说,您能确保每个螺栓只执行每个元组一次吗?或者“仅一次”仅仅意味着一旦一个元组被所有螺栓确认,它将永远不会被重放?@JimGarrison yep,如果B失败,元组将从Spoute重试,Trident保证元组不能在a中再次插入记录?但在重试之前,数据库可能有脏数据?如果需要跨多个螺栓确保数据库一致性(即事务),我认为Storm可能不够。我不是风暴专家,但我读到的所有内容都表明,更新数据库的螺栓必须是事务自包含的。@JimGarrison您可以通过在数据库上构建自己的事务层来解决这些问题。我已经多次这样做,以确保拓扑中多个螺栓之间的数据库一致性。