spring 整合kafka监听消费的配置过程

 更新时间:2021年03月05日 08:46:52   作者:蜗牛学编程  
这篇文章主要介绍了spring 整合kafka监听消费的配置过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前言

最近项目里有个需求,要消费kafka里的数据。之前也手动写过代码去消费kafka数据。但是转念一想。既然spring提供了消费kafka的方法。就没必要再去重复造轮子。于是尝试使用spring的API。

项目技术背景,使用springMVC,XML配置和注解相互使用。kafka的配置都是使用XML方式。

整合过程

1. 引入spring-kafka的依赖包

 <dependency>
      <groupId>org.springframework.kafka</groupId>
      <artifactId>spring-kafka</artifactId>
      <version>2.2.0.RELEASE</version>
    </dependency>

2. 在spring的xml文件里增加配置项,也可以单独创建一个spring-context-XX.xml文件。

<!-- consumer configuration 该配置项可以根据自己业务的实际需求做增加或删除-->
  <bean id="consumerProperties" class="java.util.HashMap">
    <constructor-arg>
      <map>
        <entry key="bootstrap.servers" value="${kafka.bootstrap.servers}" />
        <entry key="group.id" value="group" />
        <entry key="enable.auto.commit" value="true" />
        <entry key="auto.commit.interval.ms" value="3000" />
        <entry key="session.timeout.ms" value="10000" />
        <entry key="key.deserializer"
            value="org.apache.kafka.common.serialization.StringDeserializer" />
        <entry key="value.deserializer"
            value="org.apache.kafka.common.serialization.StringDeserializer" />
      </map>
    </constructor-arg>
  </bean>

  <!-- create factory 该类是spring jar包里提供,就这么配置-->
  <bean id="consumerFactory" class="org.springframework.kafka.core.DefaultKafkaConsumerFactory">
    <constructor-arg>
      <ref bean="consumerProperties" />
    </constructor-arg>
  </bean>

  <!-- 自定义的消费类,需要实现spring的接口 -->
  <bean id="payPalConsumer"
     class="com.chao.service.consumer.PayPalConsumer" />

  <!-- 该类也是jar包里提供的,注入的监听类是自己定义的,topic名称是配置文件引入的-->
  <bean id="containerProperties" class="org.springframework.kafka.listener.ContainerProperties">
    <constructor-arg name="topics" value="${kafka.paypal.topic.name}"/>
    <property name="messageListener" ref="payPalConsumer" />
  </bean>

  <!-- 改类也是jar里提供的,把这个containerProperties和consumerfactory 注入 -->
  <bean id="messageListenerContainer" class="org.springframework.kafka.listener.KafkaMessageListenerContainer"
     init-method="doStart">
    <constructor-arg ref="consumerFactory" />
    <constructor-arg ref="containerProperties" />
  </bean>

2. 自定义消费者类,消费者类依然可以使用注解。

/**
 * get msg from kafka
 */
@Component 
public class PayPalConsumer implements MessageListener<String, String> {

  private static Logger logger = LoggerFactory.getLogger(PayPalConsumer.class);
  @Autowired
  private XXService XXService;
  @Override
  public void onMessage(ConsumerRecord<String, String> authorizeRecord) {
    String value = authorizeRecord.value();
    if (StringUtils.isEmpty(value)){
      logger.warn("receive message from kafka is null");
      return;
    }
    logger.info("receive message from kafka is {}",value);
  }
}

使用这个步骤配置,一次性过。非常顺利。

到此这篇关于spring 整合kafka监听消费的配置过程的文章就介绍到这了,更多相关spring 整合kafka内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java使用EditText控件时不自动弹出输入法的方法

    java使用EditText控件时不自动弹出输入法的方法

    这篇文章主要介绍了java使用EditText控件时不自动弹出输入法的方法,需要的朋友可以参考下
    2015-03-03
  • java 判断两个时间段是否重叠的案例

    java 判断两个时间段是否重叠的案例

    这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • java中json-diff简单使用及对象是否一致详解

    java中json-diff简单使用及对象是否一致详解

    这篇文章主要为大家介绍了java中json-diff简单使用及对象是否一致对比详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Java检查字符串是否一致的四种方法

    Java检查字符串是否一致的四种方法

    字符串比较是常见的操作,包括比较相等、比较大小、比较前缀和后缀串等,在 Java 中,比较字符串的常用方法有四个:equals(),equalsIgnoreCase(),compareTo()和compareToIgnoreCase(),下面详细介绍这四个方法的使用
    2024-04-04
  • springboot整合druid连接池的步骤

    springboot整合druid连接池的步骤

    这篇文章主要介绍了springboot整合druid连接池的步骤,帮助大家更好的理解和学习springboot框架,感兴趣的朋友可以了解下
    2020-11-11
  • java简单列出文件夹下所有文件的方法

    java简单列出文件夹下所有文件的方法

    这篇文章主要介绍了java简单列出文件夹下所有文件的方法,涉及java针对文件夹遍历操作相关技巧,需要的朋友可以参考下
    2016-08-08
  • JavaWeb框架MVC设计思想详解

    JavaWeb框架MVC设计思想详解

    这篇文章主要介绍了JavaWeb框架MVC设计思想详解的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • SpringBoot自动装配原理以及分析

    SpringBoot自动装配原理以及分析

    这篇文章主要介绍了SpringBoot自动装配原理以及分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • maven的pom.xml中profiles的作用详解

    maven的pom.xml中profiles的作用详解

    这篇文章主要介绍了maven的pom.xml中profiles的作用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Spring @Order注解使用详解

    Spring @Order注解使用详解

    注解@Order或者接口Ordered的作用是定义Spring IOC容器中Bean的执行顺序的优先级,而不是定义Bean的加载顺序,Bean的加载顺序不受@Order或Ordered接口的影响
    2022-08-08

最新评论