首页 > 解决方案 > 从消费者端创建主题

问题描述

我不确定它是否可能。但是我想在这里问一下,因为在网上找不到任何相关的资源。

这可能吗,我可以从消费者方面创建主题吗?

通常我们创建消费者来访问代理中的现有主题。(在经纪人级别创建)

但是有什么办法,我可以创建主题然后使用它吗?我想在消费者端配置上完成所有这些工作。首先创建if not exists然后使用它。

这是可能的还是不是一个有效的问题?

标签: javaapache-kafka

解决方案


如果您想这样做,可以通过触发异常来实现。如果消费者将尝试连接到主题并且尚未创建,您可以启动一个函数来创建一个AdminClient您可以在其中创建主题的位置。

但是您仍然需要填充它,以便您可以使用 Worker(Source + Task for xml) 创建一个线程并用它填充您的主题(在同一个函数中)!

这里创建一个主题AdminCLient

        Properties properties = new Properties();
        properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        properties.put(ConsumerConfig.ALLOW_AUTO_CREATE_TOPICS_CONFIG, true);
        Admin adminClient = Admin.create(properties);
        adminClient.createTopics(Collections.singleton(new NewTopic( {Topic name}, 1, (short) 1)));

希望对您有所帮助


推荐阅读