Example usage for org.springframework.kafka.config MethodKafkaListenerEndpoint setMessageHandlerMethodFactory

List of usage examples for org.springframework.kafka.config MethodKafkaListenerEndpoint setMessageHandlerMethodFactory

Introduction

In this page you can find the example usage for org.springframework.kafka.config MethodKafkaListenerEndpoint setMessageHandlerMethodFactory.

Prototype

public void setMessageHandlerMethodFactory(MessageHandlerMethodFactory messageHandlerMethodFactory) 

Source Link

Document

Set the MessageHandlerMethodFactory to use to build the InvocableHandlerMethod responsible to manage the invocation of this endpoint.

Usage

From source file:org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor.java

protected void processListener(MethodKafkaListenerEndpoint<?, ?> endpoint, KafkaListener kafkaListener,
        Object bean, Object adminTarget, String beanName) {
    endpoint.setBean(bean);//from  ww  w. ja  v  a  2  s .  c  o m
    endpoint.setMessageHandlerMethodFactory(this.messageHandlerMethodFactory);
    endpoint.setId(getEndpointId(kafkaListener));
    endpoint.setTopicPartitions(resolveTopicPartitions(kafkaListener));
    endpoint.setTopics(resolveTopics(kafkaListener));
    endpoint.setTopicPattern(resolvePattern(kafkaListener));
    String group = kafkaListener.group();
    if (StringUtils.hasText(group)) {
        Object resolvedGroup = resolveExpression(group);
        if (resolvedGroup instanceof String) {
            endpoint.setGroup((String) resolvedGroup);
        }
    }

    KafkaListenerContainerFactory<?> factory = null;
    String containerFactoryBeanName = resolve(kafkaListener.containerFactory());
    if (StringUtils.hasText(containerFactoryBeanName)) {
        Assert.state(this.beanFactory != null,
                "BeanFactory must be set to obtain container factory by bean name");
        try {
            factory = this.beanFactory.getBean(containerFactoryBeanName, KafkaListenerContainerFactory.class);
        } catch (NoSuchBeanDefinitionException ex) {
            throw new BeanInitializationException(
                    "Could not register Kafka listener endpoint on [" + adminTarget + "] for bean " + beanName
                            + ", no " + KafkaListenerContainerFactory.class.getSimpleName() + " with id '"
                            + containerFactoryBeanName + "' was found in the application context",
                    ex);
        }
    }

    this.registrar.registerEndpoint(endpoint, factory);
}