Spring boot集成Kafka消息中间件代码实例

 更新时间:2020年05月16日 08:43:45   作者:墨营  
这篇文章主要介绍了Spring boot集成Kafka消息中间件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一.创建Spring boot项目,添加如下依赖

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka -->
    <dependency>
      <groupId>org.springframework.kafka</groupId>
      <artifactId>spring-kafka</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->
    <dependency>
      <groupId>org.apache.kafka</groupId>
      <artifactId>kafka-clients</artifactId>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.41</version>
    </dependency>

二.配置文件

server.port=4400

#kafka配置
#============== kafka ===================
# 指定kafka 代理地址,可以多个
spring.kafka.bootstrap-servers=192.168.102.88:9092
# 指定默认消费者group id
spring.kafka.consumer.group-id=jkafka.demo
#earliest 当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费
#latest 当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据
#none topic各分区都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常
spring.kafka.consumer.auto-offset-reset=latest
spring.kafka.consumer.enable-auto-commit=false
spring.kafka.consumer.auto-commit-interval=100
# 指定消费者消息key和消息体的编解码方式
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer

三.编辑消息实体

@Data
public class Message implements Serializable{

  /**
   * 
   */
  private static final long serialVersionUID = 2522280475099635810L;

  //消息ID
  private String id;

  //消息内容
  private String msg;

  // 消息发送时间
  private Date sendTime;

}

四.消息发送类

@Component
public class KfkaProducer {

  private static Logger logger = LoggerFactory.getLogger(KfkaProducer.class);

  @Autowired
  private KafkaTemplate<String, String> kafkaTemplate;

  public void send(String topic,Message message) {
    try {
      logger.info("正在发送消息...");
      kafkaTemplate.send(topic,JSON.toJSONString(message));
      logger.info("发送消息成功 ----->>>>> message = {}", JSON.toJSONString(message));
    } catch (Exception e) {
      e.getMessage();
    }

  }
}

五.发现监听接收类

@Component
public class KfkaListener {

  private static Logger logger = LoggerFactory.getLogger(KfkaListener.class);

  @KafkaListener(topics = {"hello"})
  public void listen(ConsumerRecord<?, ?> record) {
    Optional<?> kafkaMessage = Optional.ofNullable(record.value());
    if (kafkaMessage.isPresent()) {
      Object message = kafkaMessage.get();
      logger.info("接收消息------------ record =" + record);
      logger.info("接收消息----------- message =" + message);
    }
  }
}

六.定时发送信息测试类

@EnableScheduling
@Component
public class PublisherController {

  private static final Logger log = LoggerFactory.getLogger(PublisherController.class);

  @Autowired
  private KfkaProducer kfkaProducer;

  @Scheduled(fixedRate = 5000)
  public void pubMsg() {
    Message msg=new Message();
    msg.setId(UUID.randomUUID().toString());
    msg.setMsg("发送这条消息给你,你好啊!!!!!!");
    msg.setSendTime(new Date());
    kfkaProducer.send("hello", msg);;
    log.info("Publisher sendes Topic... ");
  }
}

七.测试结果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java绘图库JFreeChart的使用教程

    Java绘图库JFreeChart的使用教程

    图表是一种以简单方式显示信息的图形,JFreeChart允许创建各种交互式和非交互式图表,本文主要介绍了Java绘图库JFreeChart的使用教程,感兴趣的可以了解一下
    2023-09-09
  • SpringBoot整合MongoDB的步骤详解

    SpringBoot整合MongoDB的步骤详解

    这篇文章主要介绍了SpringBoot整合MongoDB的步骤详解,帮助大家更好的理解和学习使用SpringBoot框架,感兴趣的朋友可以了解下
    2021-04-04
  • 浅谈java 数据处理(int[][]存储与读取)

    浅谈java 数据处理(int[][]存储与读取)

    下面小编就为大家带来一篇浅谈java 数据处理(int[][]存储与读取)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java 中校验时间格式的常见方法

    Java 中校验时间格式的常见方法

    在实际项目开发中,跟时间参数打交道是必不可少的,为了保证程序的安全性、健壮性,一般都会对参数进行校验,其他类型的参数校验很好实现,那你知道时间参数的是怎么校验的吗,下面给大家分享Java 中校验时间格式的方法,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • spring kafka框架中@KafkaListener 注解解读和使用案例

    spring kafka框架中@KafkaListener 注解解读和使用案例

    Kafka 目前主要作为一个分布式的发布订阅式的消息系统使用,也是目前最流行的消息队列系统之一,这篇文章主要介绍了kafka @KafkaListener 注解解读,需要的朋友可以参考下
    2023-02-02
  • Java那些鲜为人知的关键字volatile详析

    Java那些鲜为人知的关键字volatile详析

    这篇文章主要给大家介绍了关于Java那些鲜为人知的关键字volatile的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java缩略图生成库之Thumbnailator应用说明

    Java缩略图生成库之Thumbnailator应用说明

    Thumbnailator是一个为Java界面更流畅的缩略图生成库,从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,使用起来非常方便,需要的朋友可以了解下
    2012-12-12
  • Spring security基于数据库中账户密码认证

    Spring security基于数据库中账户密码认证

    这篇文章主要介绍了Spring security基于数据库中账户密码认证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • java实现文件重命名功能

    java实现文件重命名功能

    这篇文章主要介绍了java实现文件重命名功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • SpringBoot实现JPA多数据源配置小结

    SpringBoot实现JPA多数据源配置小结

    本文主要介绍了SpringBoot实现JPA多数据源配置小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01

最新评论