如何使用Kafka在生产者端具有容错能力

我是Kafa和数据提取的新手。我知道Kafka是容错的,因为它可以将数据冗余地保存在多个节点上。但是,我不了解的是我们如何在源/生产者端实现容错能力。例如,如果我有netcat作为源,如下面的示例所示。

nc -l [some_port] | ./bin/kafka-console-producer --broker-list [kafka_server]:9092 --topic [my_topic]

如果执行netcat的节点出现故障,生产者将无法推送消息。我在考虑是否存在一种机制,Kafka可以自己拉动输入,因此,例如,如果在一个节点上的netcat发生故障,则另一个节点可以接管并开始使用netcat推送消息。

我的第二个问题是Flume如何实现这一点,因为它是基于拉的架构。 Flume在这种情况下是否可以工作,也就是说,如果一个节点执行netcat失败?