spring boot整合spring-kafka实现发送接收消息实例代码

yizhihongxing

下面我将为您详细讲解spring boot整合spring-kafka实现发送接收消息的攻略。

一、集成Spring-Kafka依赖

在pom.xml文件中添加spring-kafka的依赖:

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

二、编写Producer

在spring boot应用中,我们需要编写一个Producer类来发送消息。代码示例如下:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;

@Component
public class KafkaProducer {

    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;

    public void sendMessage(String topic, String message) {
        kafkaTemplate.send(topic, message);
    }
}

在上面的代码中,我们使用@Autowired注解将KafkaTemplate注入到生产者类中,然后编写sendMessage方法来发送消息。

三、编写Consumer

接下来,我们需要编写一个Consumer类来接收消息。代码示例如下:

import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

@Component
public class KafkaConsumer {

    @KafkaListener(topics = "${kafka.topic}")
    public void listen(String message) {
        System.out.println("Received message: " + message);
    }
}

在上面的代码中,我们使用@KafkaListener注解来监听指定的主题,一旦有消息到达,就会调用listen方法来处理消息。

四、配置Kafka

在application.properties文件中添加以下Kafka配置:

spring.kafka.bootstrap-servers=127.0.0.1:9092
spring.kafka.consumer.group-id=my-group
kafka.topic=my-topic

在上面的代码中,我们配置了Kafka的地址、消费者组和主题。

五、使用示例

假设我们现在要发送一条消息,代码示例如下:

@Autowired
private KafkaProducer kafkaProducer;

...

kafkaProducer.sendMessage("my-topic", "Hello, world!");

假设我们现在要接收来自“my-topic”主题的消息,代码示例如下:

@Autowired
private KafkaConsumer kafkaConsumer;

...

// wait for a while to receive the message
Thread.sleep(5000);

六、完整实例代码

在最后,我提供完整的Spring-Boot整合Spring-Kafka的示例代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;

@SpringBootApplication
public class SpringKafkaDemoApplication {

    public static void main(String[] args) throws InterruptedException {
        ConfigurableApplicationContext context = SpringApplication.run(SpringKafkaDemoApplication.class, args);

        // send a message
        KafkaProducer kafkaProducer = context.getBean(KafkaProducer.class);
        kafkaProducer.sendMessage("my-topic", "Hello, world!");

        // wait for a while to receive the message
        Thread.sleep(5000);

        context.close();
    }

    @Component
    public static class KafkaProducer {

        @Autowired
        private KafkaTemplate<String, String> kafkaTemplate;

        public void sendMessage(String topic, String message) {
            kafkaTemplate.send(topic, message);
        }
    }

    @Component
    public static class KafkaConsumer {

        @KafkaListener(topics = "${kafka.topic}")
        public void listen(String message) {
            System.out.println("Received message: " + message);
        }
    }
}

希望以上内容能够对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring boot整合spring-kafka实现发送接收消息实例代码 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • SpringBoot集成quartz实现定时任务详解

    SpringBoot集成Quartz实现定时任务详解 1. 什么是Quartz Quartz是一个开源的作业调度框架,其主要用于定时调度任务。它能够完成复杂的调度需求,如在指定时间执行任务、每天执行任务、周末执行任务等。 2. SpringBoot集成Quartz 2.1 引入依赖 我们首先需要在pom.xml文件中引入quartz和spring-boot-…

    Java 2023年5月19日
    00
  • 一篇文章带你入门Java运算符

    一篇文章带你入门Java运算符 运算符是编程语言中非常重要的基础知识之一,Java作为一门主流的编程语言也是如此。在这篇文章中,我们将详细讲解Java中的各种运算符,带你入门Java运算符。本文主要内容如下: 基础概念介绍 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 基础概念介绍 在学习Java运算符之前,我们需要先了解一些基础概念。Java中…

    Java 2023年5月23日
    00
  • JavaSpringBoot报错“UnsatisfiedDependencyException”的原因和处理方法

    原因 “UnsatisfiedDependencyException” 错误通常是以下原因引起的: 依赖项未找到:如果您的代码中存在依赖项未找到的问题,则可能会出现此错误。在这种情况下,您需要检查您的代码并确保它们正确。 多个 Bean 匹配:如果您的代码中存在多个 Bean 匹配的问题,则可能会出现此错误。在这种情况下,您需要检查您的代码并确保它们正确。 …

    Java 2023年5月4日
    00
  • Java用jxl读取excel并保存到数据库的方法

    下面是Java用jxl读取excel并保存到数据库的攻略: 1. 环境准备 1.1 安装jxl、mysql-connector-java,可以在maven仓库中获取对应的依赖。 1.2 准备好JDBC连接数据库的连接信息,例如:数据库的地址、端口、用户名、密码等。 1.3 准备Excel文件。 2. 读取Excel文件 2.1 使用jxl的Workbook类…

    Java 2023年5月20日
    00
  • Tomcat使用Log4j输出catalina.out日志

    介绍 在使用Tomcat服务器时,通常需要对服务器的运行状态进行特定的记录,例如:访问日志、错误日志、调试日志等。而catalina.out则是Tomcat服务中的一种重要的日志文件,其中一般会记录Tomcat服务器的所有日志,包括控制台的输出信息、访问日志、错误日志等。在Tomcat服务器中,默认的日志实现是JUL(Java Util Logging),但…

    Java 2023年5月19日
    00
  • Java多线程下载文件实例详解

    Java多线程下载文件实例详解 介绍 在网络传输过程中,下载文件是常见的需求。当文件较大时,单线程下载会占用大量时间,因此需要用多线程来实现加快下载速度的目的。本文将详细介绍Java多线程下载文件的实现方法。 实现步骤 第一步:分析问题 在实现这个功能之前,我们需要先思考,怎样能够更快地下载文件? 答案是,使用多线程。在一定程度上,多线程可以在同一时间内下载…

    Java 2023年5月26日
    00
  • Jackson将json string转为Object,org.json读取json数组的实例

    Jackson是一个流行的Java库,它提供了将Java对象转换为JSON(序列化)以及将JSON转换为Java对象(反序列化)的功能。下面对Jackson将JSON字符串转换为Java对象和使用org.json读取JSON数组进行详细讲解: Jackson将JSON字符串转为Java对象 以下是将JSON字符串转换为Java对象的步骤: 引入Jackson…

    Java 2023年5月26日
    00
  • Java的Struts框架报错“ApplicationException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“ActionServletException”错误。这个错误通常由以下原因之一起: 配置错误:如果配置文件中没有正确配置ActionServlet,则可能会出现此。在这种情况下,需要检查配置文件以解决此问题。 类加载问题:如果类加载器无法加载所需的类,则可能会出现此。在这种情况下,需要检查类路径以解决此问题。 …

    Java 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部