我们计划在应用程序中使用kafka进行排队。我在兔子和Spring有一些经验。使用rabbitmq和spring,我们可以在启动spring服务时管理队列创建。对于Kafka,我不确定什么是创造主题的最佳方式?有没有办法用spring来管理主题。或者,我们应该写一个单独的脚本来帮助创建主题吗?维护一个单独的脚本来创建主题对我来说似乎有点奇怪。如有任何建议,我们将不胜感激。
fjnneemd1#
要在spring boot中自动创建kafka主题,只需要以下内容:
@Bean public NewTopic topic1() { return new NewTopic("foo", 10, (short) 2); //foo: topic name //10: number of partitions //2: replication factor }
kafka管理员是由springboot自动创建和配置的。SpringKafka的2.3版引入了topicbuilder类,使构建主题更加流畅和直观:
@Bean public NewTopic topic(){ return TopicBuilder.name("foo") .partitions(10) .replicas(2) .build(); }
a11xaf1n2#
在spring中,可以在应用程序启动期间使用Bean创建主题:
@Bean public KafkaAdmin admin() { Map<String, Object> configs = new HashMap<>(); configs.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, StringUtils.arrayToCommaDelimitedString(kafkaEmbedded().getBrokerAddresses())); return new KafkaAdmin(configs); } @Bean public NewTopic topic1() { return new NewTopic("foo", 10, (short) 2); }
或者,您可以通过自动连接 AdminClient ,例如,从输入文件读取列表或指定高级属性(如分区号):
AdminClient
@Autowired private KafkaAdmin admin; //...your implementation
还要注意的是,自从Kafka1.1.0 auto.create.topics.enable 默认情况下启用(请参阅代理配置)。有关更多信息,请参阅 Spring Kafka文档
auto.create.topics.enable
2条答案
按热度按时间fjnneemd1#
要在spring boot中自动创建kafka主题,只需要以下内容:
kafka管理员是由springboot自动创建和配置的。
SpringKafka的2.3版引入了topicbuilder类,使构建主题更加流畅和直观:
a11xaf1n2#
在spring中,可以在应用程序启动期间使用Bean创建主题:
或者,您可以通过自动连接
AdminClient
,例如,从输入文件读取列表或指定高级属性(如分区号):还要注意的是,自从Kafka1.1.0
auto.create.topics.enable
默认情况下启用(请参阅代理配置)。有关更多信息,请参阅 Spring Kafka文档