Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 如何通知消费者卡夫卡中已创建新主题?_Apache Kafka_Sarama - Fatal编程技术网

Apache kafka 如何通知消费者卡夫卡中已创建新主题?

Apache kafka 如何通知消费者卡夫卡中已创建新主题?,apache-kafka,sarama,Apache Kafka,Sarama,我试图让我的消费者动态更新其消费 让我给你们举一个使用动物的更具体的例子。假设我有一家宠物店,每个主题都是一种动物(例如狗、猫、鱼)。我的卡夫卡消费者的主要职责是获取卡夫卡中的任何日志/记录/消息,并将它们存储到数据库中 假设我的消费者正在积极地消费狗和猫主题,并且一切正常,现在有一种新类型的动物进入商店,卡夫卡集群中生成了一个新主题。如何通知消费者已添加新主题 我有两个建议,我想看看你认为哪一个更好?或者如果有更好的第三种选择,请让我知道 1.)生产者向消费者发送http请求,并让消费者知道生

我试图让我的消费者动态更新其消费

让我给你们举一个使用动物的更具体的例子。假设我有一家宠物店,每个主题都是一种动物(例如狗、猫、鱼)。我的卡夫卡消费者的主要职责是获取卡夫卡中的任何日志/记录/消息,并将它们存储到数据库中

假设我的消费者正在积极地消费
主题,并且一切正常,现在有一种新类型的动物进入商店,卡夫卡集群中生成了一个新主题。如何通知消费者已添加新主题

我有两个建议,我想看看你认为哪一个更好?或者如果有更好的第三种选择,请让我知道

1.)生产者向消费者发送http请求,并让消费者知道生产者将要创建一个新主题,以便消费者可以相应地采取行动。这种方法的问题在于,存在竞争条件。消费者有可能在主题创建之前就尝试消费。(事实上,我刚刚发现,如果将
auto.topic.creation.enable
设置为true,则竞争条件实际上不是问题。)

2.)在卡夫卡集群中创建一个名为
topic_updates
的额外主题。因此,只要制作人成功地向卡夫卡集群提交了一条消息,它就会通过这个
topic\u updates
广播新闻,也许一个简单的字符串就可以了。消费者正在积极收听此主题更新

3.)我不知道,理想情况下,我希望卡夫卡能够在创建新主题时发出一个事件


提前感谢

消费者能够自动找到新创建的主题,您可以通过调用
Consumer.subscribe(Pattern.compile(“*)”)订阅所有主题


可以降低元数据.max.age.ms
,让消费者更快地了解新主题

消费者能够自动找到新创建的主题,您可以通过调用
Consumer.subscribe(Pattern.compile(“*)”)订阅所有主题


可以降低元数据.max.age.ms
,让消费者更快地了解新主题

您可以使用新的KafkaAdminClient,以某种方式监视主题列表并检查新添加的内容。下面是一个示例代码,它提供了主题列表(不包括内部主题):


您可以使用新的KafkaAdminClient,以某种方式监视主题列表并检查新添加的内容。下面是一个示例代码,它提供了主题列表(不包括内部主题):


它对我不起作用。正如我尝试过的那样,
kafka控制台使用者--引导服务器localhost:9092--白名单“mytopics.*”--使用者属性metadata.max.age.ms=5000
kafka控制台生产者--代理列表localhost:9092--主题mytopics.1234
。在获取相关id为3的元数据时,我仍然收到警告[Producer clientId=console Producer]错误:{mytopics.1234=LEADER\u NOT\u AVAILABLE}(org.apache.kafka.clients.NetworkClient)它对我不起作用。正如我尝试过的那样,
kafka控制台使用者--引导服务器localhost:9092--白名单“mytopics.*”--使用者属性metadata.max.age.ms=5000
kafka控制台生产者--代理列表localhost:9092--主题mytopics.1234
。在获取相关id为3的元数据时,我仍然收到
[2019-12-20 15:00:59080]警告[Producer clientId=console Producer]错误:{mytopics.1234=LEADER\u NOT\u AVAILABLE}
(org.apache.kafka.clients.NetworkClient)
Properties properties = new Properties();
properties.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
KafkaAdminClient kafkaAdminClient = (KafkaAdminClient) AdminClient.create(properties);
ListTopicsResult listTopicResult = kafkaAdminClient.listTopics();
System.out.println(listTopicResult.names().get().toString());