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());
}
}
添加了配置类后,消息就可以正常的发送了。