Spring Boot 注解简单集成 Kafka

依赖

Maven

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

配置文件

spring:
  kafka:
    # 地址
    bootstrap-servers: 自己链接的地址,不给这一项时会默认链接本地的 9092端口
    # 消费者配置
    consumer:
      group-id: kafka-demo-kafka-group
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer #关键字的序列化类
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer #值的序列化类
      # 账号密码配置 如果设置了
      properties:
        sasl.mechanism: PLAIN
        security.protocol: SASL_PLAINTEXT
        sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="访问用户名" password="访问密码";
    # 生产者配置
    producer:
      group-id: kafka-demo-kafka-group
      key-serializer: org.apache.kafka.common.serialization.StringSerializer #关键字的序列化类
      value-serializer: org.apache.kafka.common.serialization.StringSerializer #值的序列化类
      # 账号密码配置 如果设置了
      properties:
        session.timeout.ms: 15000
        sasl.mechanism: PLAIN
        security.protocol: SASL_PLAINTEXT
        sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="访问用户名" password="访问密码";

消费者 (Consumer)

注意文件一定要在spring 扫描的路径下
Slf4j 仅为日志 ,如果不用 lombok 可以去除不要

import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class KafkaConsumer {

    /**
     * 构建消费者
     * @param consumerRecord 消费记录
     */
    @KafkaListener(topics = {"kafa_test_topic"})
    public void handleKafkaMessage(ConsumerRecord<String, String> consumerRecord){
        log.info("receive kafka message: value:{}, 偏移量:{}, partition:{}", consumerRecord.value(),
                consumerRecord.offset(), consumerRecord.partition());

    }

}

生产者(Producer)

使用 kafka 提供的 KafkaTemplate 来完成消息的发送
发送时可以进一步简化入参,具体看send 的重载方法即可,这里提供一种

可能会发现 注入的地方有爆红,但是不用关心,依旧可以正常启动

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class KafkaProducer {

    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;

    /**
     * 发送kafka消息 使用 KafkaTemplate
     * @param content 发送的内容
     * @return
     */
    public String sendMessage(String content){
        // 发送的主题
        String topic = "kafa_test_topic";
             // 主题,分区(一般测试只有一个时默认给个0即可),值的key, key对应的发送内容
        kafkaTemplate.send(topic, 0, "key", content);
        return "success";
    }

}

在controller 中的示例调用

@RestController
@RequestMapping("/test")
public class RestRequestTestController {

    @Autowired
    private KafkaProducer kafkaProducer;

    @GetMapping("/testKafka")
    public Response testKafka(@RequestParam(value = "requestParam")String requestParam){

        kafkaProducer.sendMessage(requestParam);
        return Response.success(requestParam);
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Boot 可以使用 Spring for Apache Kafka 库来集成 KafkaSpring for Apache Kafka 是一个基于 Spring 框架的库,提供了简单Java 模板,以及一些可以用来简化开发的工具和抽象层。 ### 回答2: 要在Spring Boot集成Kafka,需要进行以下步骤: 1. 添加Kafka依赖:在`pom.xml`文件中添加Kafka依赖项。可以使用Spring Boot提供的`spring-kafka`库。可以在Maven仓库中找到适用于Spring Boot的最新版本依赖。 2. 配置Kafka连接:在`application.properties`中添加Kafka连接配置。配置信息包括Kafka服务器的地址和端口号。 3. 创建Kafka生产者:使用`KafkaTemplate`类创建一个Kafka生产者KafkaTemplate提供了发送消息到Kafka主题的便捷方法。 4. 创建Kafka消费者:使用`@KafkaListener`注解标记一个方法作为Kafka消费者。在方法中,可以通过指定要监听的Kafka主题和消费者组来接收Kafka消息。 5. 发送消息到Kafka:通过调用Kafka生产者的`send()`方法来发送消息到Kafka主题。可以在需要的地方调用该方法来发送消息。 6. 接收Kafka消息:通过Kafka消费者的`@KafkaListener`注解标记的方法来接收Kafka消息。当有新的消息到达时,被标记的方法将被自动调用。 7. 处理Kafka消息:在Kafka消费者的标记方法中,可以根据接收到的消息进行相应的处理。可以将消息保存到数据库、打印到日志文件或进行其他业务逻辑处理。 通过以上步骤,就可以在Spring Boot中成功集成Kafka。在应用程序运行时,可以发送和接收Kafka消息,并根据业务需求进行相应的处理。 ### 回答3: Spring Boot可以通过使用Spring Kafka集成Kafka。 首先,要在pom.xml文件中添加Spring Kafka的依赖项。可以在dependency部分添加以下代码: ```xml <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> ``` 然后,需要配置Kafka的连接属性。可以在application.properties或application.yml中添加以下配置: ```properties spring.kafka.bootstrap-servers=localhost:9092 ``` 接下来,创建一个KafkaProducer,用于向Kafka发送消息。可以使用@Autowired注解KafkaTemplate注入到代码中,然后使用send方法发送消息。例如: ```java @Autowired private KafkaTemplate<String, String> kafkaTemplate; public void sendMessage(String topic, String message) { kafkaTemplate.send(topic, message); } ``` 要创建一个KafkaConsumer,用于从Kafka接收消息,可以使用@KafkaListener注解将消费者方法注入到代码中。例如: ```java @KafkaListener(topics = "myTopic") public void receiveMessage(String message) { System.out.println("Received message: " + message); } ``` 最后,可以在启动类上使用@EnableKafka注解启用Kafka支持。例如: ```java @SpringBootApplication @EnableKafka public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 这样,Spring Boot就成功集成Kafka。可以使用KafkaTemplate发送消息,使用@KafkaListener接收消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值