【发布时间】:2020-08-17 23:05:32
【问题描述】:
我目前正在使用 Kafka 而不是 Kafka 流库来部署分布式流处理链。我创建了一种节点,可以执行并将主题作为输入,处理获得的数据并将其发送到输出主题。该节点是一个简单的消费者/生产者对,与唯一的上游分区相关联。生产者是幂等的,处理是在事务上下文中完成的,例如:
producer.initTransaction();
try
{
producer.beginTransaction();
//process
producer.commitTransaction();
}
catch (KafkaException e)
{
producer.abortTransaction();
}
我还使用了producer.sendoffsetstotransaction 方法来确保消费者的原子提交。
我想使用键值存储来保持节点的状态(我正在考虑使用看起来很简单的 MapDB)。
但我想知道如果我用map.put(key, value) 更新我在事务中的状态,例如,事务会确保状态将被更新一次吗?
非常感谢
【问题讨论】:
标签: apache-kafka process stream eos