我正在尝试将一个kafka群集中的消息转换为另一个群集中的主题。我正在做的是
使用spring kafka侦听器(kafka 0.10)消费集群中来自消费者主题的事件
转换消息并使用spring kafka模板将消息发布到另一个集群中的主题
public class KafkaConsumer implements AcknowledgingMessageListener<String, Object> {
public void onMessage(ConsumerRecord<String, Object> data, Acknowledgment acknowledgment) {
try {
Object transformedData = data.value();//DO Something with the data like transform / massage
kafkaTemplate.send(new ProducerRecord<String, Object>(topicName, data.key(), transformedData));
acknowledgment.acknowledge();
} catch (Exception e) {
LOGGER.error("Push the messaged to Error Stream : " + e);
}
}
}
想知道在产生记录失败时是否存在与消费者补偿有关的差异吗?
我发现也可以实现此目的的其他方法:
使用kafka流处理和转换来自消费者主题的消息,并使用Publisher将消息发布到另一个群集中的预期主题(How to connect to multiple clusters in a single Kafka Streams application?)
使用kafka连接复制器将消费者主题模拟到Producer主题集群上。完成此操作后,我们将可以使用Kafka流(Can Kafka Streams output topic be on a separate cluster?)
有人尝试过类似的方法吗?与上面列出的其他两种方法相比,我使用的方法是否有数据丢失的可能性或对性能有影响?