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