Thi*_*iru 4 java rabbitmq apache-kafka spring-boot spring-kafka
我们计划在我们的应用程序中使用Kafka排队.我在RabbitMQ和Spring方面有一些经验.
使用RabbitMQ和Spring,我们曾经在启动spring服务时管理队列创建.
有了Kafka,我不确定什么是创建主题的最佳方式?有没有办法用Spring管理主题.
或者,我们应该编写一个单独的脚本来帮助创建主题吗?维护一个单独的脚本来创建主题对我来说似乎有点奇怪.
任何建议将不胜感激.
在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);
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过自动装配来编写自己的创建主题AdminClient,例如从输入文件中读取列表或指定高级属性(如分区号):
@Autowired
private KafkaAdmin admin;
//...your implementation
Run Code Online (Sandbox Code Playgroud)
另请注意,因为默认情况下启用了Kafka 1.1.0 auto.create.topics.enable(请参阅Broker configs).
有关更多信息,请参阅spring-kafka 文档
要在 Spring Boot 中自动创建 Kafka 主题,只需要:
@Bean
public NewTopic topic1() {
return new NewTopic("foo", 10, (short) 2);
//foo: topic name
//10: number of partitions
//2: replication factor
}
Run Code Online (Sandbox Code Playgroud)
Kafka Admin 由 Spring Boot 自动创建和配置。
Spring Kafka 2.3 版本引入了一个TopicBuilder类,使构建主题更加流畅和直观:
@Bean
public NewTopic topic(){
return TopicBuilder.name("foo")
.partitions(10)
.replicas(2)
.build();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2921 次 |
| 最近记录: |