SpringBoot 结合kafka生产者发送消息

spring boot在结合kafka的时候,需要给生产者配置一个配置类,如果单纯的使用配置文件的话,是会出现一个异常的,虽然不是显示的异常,异常链接如下:

https://ask.csdn.net/questions/768710

大概的意味我感觉是开始的时候就关闭了producer的客户端,可能大概的意思就是没有初始化客户端吧(我猜想的),在只有配置文件的情况下试了好几种方法,依然显示的是这个。

然后看了很多发送消息的方法都是需要有给kafkaTemplete初始化,然后我就试了下添加配置类,配置类如下:

package com.application.kafka;


import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.serialization.StringSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.annotation.EnableKafka;
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.ProducerFactory;

import java.util.HashMap;
import java.util.Map;

@Configuration
@EnableKafka
public class KafkaConfig
{
    @Bean
    public ProducerFactory<String,String> producerFactory()
    {
        return new DefaultKafkaProducerFactory<>(producerConfig());
    }

    @Bean
    public Map<String,Object> producerConfig()
    {
        Map<String,Object> props=new HashMap<>();
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,IP);
        props.put(ProducerConfig.RETRIES_CONFIG,0);
        props.put(ProducerConfig.BATCH_SIZE_CONFIG,16834);
        props.put(ProducerConfig.LINGER_MS_CONFIG,1);
        props.put(ProducerConfig.BUFFER_MEMORY_CONFIG,33554432);
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class);
        return props;
    }

    @Bean
    public KafkaTemplate<String ,String> kafkaTemplate()
    {
        return new KafkaTemplate<String,String>  (producerFactory());
    }
}

添加了配置类后,消息就可以正常的发送了。

Spring Boot 结合 Apache Kafka 异步发送消息通常涉及到以下几个步骤: 1. **添加依赖**:首先,在你的Spring Boot项目中添加Kafka和相关Spring Cloud Stream依赖到`pom.xml`或`build.gradle`文件中。 ```xml <!-- Maven --> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> <!-- Gradle (example) --> implementation 'org.springframework.cloud:spring-cloud-stream' implementation 'org.springframework.cloud:spring-cloud-stream-binder-kafka' ``` 2. **配置Kafka**:在application.yml或application.properties文件里配置Kafka的连接信息,包括bootstrap servers地址等。 ```yaml spring: cloud: stream: bindings: input-topic: destination: your-input-topic output-topic: destination: your-output-topic kafka: consumer: bootstrap-servers: localhost:9092 producer: bootstrap-servers: localhost:9092 key-serializer: org.apache.kafka.common.serialization.StringSerializer value-serializer: org.apache.kafka.common.serialization.StringSerializer ``` 3. **创建生产者或消费者**:定义一个处理消息发送的类,并使用`@KafkaListener`或`@SendTo`注解来处理异步消息。 ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.kafka.core.KafkaTemplate; import org.springframework.stereotype.Component; @Component public class MyKafkaProducer { private final KafkaTemplate<String, String> kafkaTemplate; @Autowired public MyKafkaProducer(KafkaTemplate<String, String> kafkaTemplate) { this.kafkaTemplate = kafkaTemplate; } @KafkaListener(topics = "your-input-topic") public void sendMessage(String message) { kafkaTemplate.send("your-output-topic", message); } } ``` 在这个例子中,`MyKafkaProducer`监听指定输入主题的消息,然后将其发送到另一个输出主题。 4. **启动应用**:启动Spring Boot应用,它会自动创建Kafka消费者和生产者,并按照配置进行消息交互。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值