storm 为什么要存在不透明分区事务

不透明分区事务不区分发新消息还是旧消息,全部用emitPartitionBatch搞定,虽然

emitPartitionBatch返回的X应该是下一批次供自己使用(emitPartitionBatch的第四个参数),

但是只有一个批次成功以后X才会更新到Zookeeper中,如果失败重发,emitPartitionBatch读取

的X还是旧的.所以这时候自定义的X不需要记录当前批次的开始位置和下一批次的开始位置两个值,

只需要记录下一批次开始位置一个值即可.eg:

public class BatchMeta{

  public long nextOffset;//下一批次的偏移量

}

原文地址:https://www.cnblogs.com/yaohaitao/p/6495687.html