【Spring连载】使用Spring访问 Apache Kafka(八)----容器工厂Container factory
正如 @KafkaListener 注解中所讨论的,ConcurrentKafkaListenerContainerFactory用于为带注解的方法创建容器。
你可以使用同一个工厂来创建任何ConcurrentMessageListenerContainer。如果你想创建几个具有类似属性的容器,或者希望使用一些外部配置的工厂,例如Spring Boot自动配置提供的工厂,这可能会很有用。创建容器后,你可以进一步修改其属性,其中许多属性是通过使用container.getContainerProperties()设置的。以下示例配置ConcurrentMessageListenerContainer:
@Bean
public ConcurrentMessageListenerContainer<String, String>(
ConcurrentKafkaListenerContainerFactory<String, String> factory) {
ConcurrentMessageListenerContainer<String, String> container =
factory.createContainer("topic1", "topic2");
container.setMessageListener(m -> { ... } );
return container;
}
以这种方式创建的容器不会添加到endpoint registry中。它们应该被创建为@Bean,以便在应用程序上下文中注册。
你可以向工厂添加ContainerCustomizer,以便在创建和配置每个容器后对其进行进一步配置。
@Bean
public KafkaListenerContainerFactory<?> kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<Integer, String> factory =
new ConcurrentKafkaListenerContainerFactory<>();
...
factory.setContainerCustomizer(container -> { /* customize the container */ });
return factory;
}