Estou usando o spring boot 2.7 + kafka 3.0.
Eu tenho um bean na minha configuração conforme abaixo para definir o KafkaListenerEndpointRegistry.
Neste bean, preciso cadastrar meu listener com o método registerListenerContainer.
@Bean(name = KafkaListenerConfigUtils.KAFKA_LISTENER_ENDPOINT_REGISTRY_BEAN_NAME)
public KafkaListenerEndpointRegistry defaultKafkaListenerEndpointRegistry(Map<String, RetryConfig> retryConfigMap) {
return new KafkaListenerEndpointRegistry() {
@Override
public void registerListenerContainer(
KafkaListenerEndpoint endpoint, KafkaListenerContainerFactory<?> factory) {
// register original one
MethodKafkaListenerEndpoint<Object, Object> methodEndpoint = (MethodKafkaListenerEndpoint<Object, Object>) endpoint;
String originalTopic = new ArrayList<String>(endpoint.getTopics()).get(0);
super.registerListenerContainer(methodEndpoint, factory);
...
}
};
}
O método registerListenerContainer tem uma propriedade startImmediately que por padrão é false, devo defini-la como true, do documento diz:
O sinalizador startImmediately determina se o contêiner deve ser iniciado imediatamente.
Mas isso realmente não está claro para mim, qual é a diferença da configuração diferente? e que impacto teria se definido como falso?