我写了一个关于三叉戟的演示。在演示中,我想在事务喷口中生成一系列批次的数据,然后对它们进行持久聚合操作。
正常处理是这样的:
step1: txid=1, {"aaa 3", "bbb 2"}==>persist to DB(OK)
step2: txid=2, {"ccc 6", "ddd 7"}==>persist to DB(OK)
在step1中persist to DB的操作出现异常的情况下,我想流程应该是
step1: txid=1, {"aaa 3", "bbb 2"}==>persist to DB(NG)
step2: txid=1, {"aaa 3", "bbb 2"}==>persist to DB(OK)
但测试结果如下:
step1: txid=1, {"aaa 3", "bbb 2"}==>persist to DB(NG)
step2: txid=1, {"ccc 6", "ddd 7"}==>persist to DB(OK)
我认为这个过程是不正确的。但我不知道为什么会这样。我检查了动物园管理员,在路径“meta/1”中,值为空。
我自己写了一个事务性的spout,实现了接口ITridentSpout,我认为这可能是我写的spout的问题。
任何人都可以给我一些建议吗?或者给我一个实现的事务喷口示例供我参考。
谢谢!