アプリケーションのキューイングにKafkaを使用することを計画しています。RabbitMQとSpringで少し経験があります。
RabbitMQとSpringでは、Springサービスの起動時にキューの作成を管理していました。
Kafkaを使用すると、トピックを作成するための最良の方法が何であるかわかりません。 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
を自動配線して独自の作成トピックを作成することもできます。たとえば、入力ファイルからリストを読み取るか、パーティション番号などの高度なプロパティを指定します。
@Autowired
private KafkaAdmin admin;
//...your implementation
また、Kafka1.1.0auto.create.topics.enable
はデフォルトで有効になっています( ブローカー構成を参照 )。
詳細については、spring-kafka docs を参照してください。
SpringBootでKafkaトピックを自動的に作成するには、 これだけが必要です:
@Bean
public NewTopic topic1() {
return new NewTopic("foo", 10, (short) 2);
}
Kafka Adminは、SpringBootによって自動的に作成および構成されます。