spring和springboot集成kafka

spring和springboot集成kafka

1.kafka配置

  • 一般组件支持的配置都会再*Config.Java中描述,其中有可配置项、可配置项描述、默认配置值等信息,而kafka的配置类为:ProducerConfig.java
#kafka服务器的地址和端口,eg:127.0.0.1:9092
bootstrap.servers

#控制客户端如何使用DNS查找
client.dns.lookup

#阻塞等待元数据的最长时间;ps:数据首次发送到topic时,需要先获取改topic的元数据,才能知道改topic的依赖服务
metadata.fetch.timeout.ms	#默认:60 * 1000
#更新元数据的刷新时间
metadata.max.age.ms		#默认:5 * 60 * 1000
#缓存元数据的时间
metadata.max.idle.ms

#指定批处理的大小,单位未字节;ps:当消息字节数达到该值后,统一将消息分发到各以来服务
batch.size	#默认:16384

#记录的最大缓冲区
buffer.memory  #默认:32 * 1024 * 1024

#值为0,则不使用ack机制;值为1则相反
acks	#默认:1

#服务端等端确认ack的最大时间
timeout.ms	#默认:30 * 1000

#暂不描述
linger.ms	默认:0

#客户端id(方便资源跟踪)
client.id

#发送/接收 数据时要使用的TCP发送缓冲区的大小
send.buffer.bytes  #默认:128 * 1024
receive.buffer.bytes #默认:32 * 1024

#请求的最大大小。这实际上也是最大记录大小的上限
max.request.size	#默认:1 * 1024 * 1024

#重试连接等待的时间
reconnect.backoff.ms	#默认:50

#当缓冲区耗尽时是否需要阻塞或抛出异常
block.on.buffer.full	#默认:true

#重试次数
retries	 #默认:0

#重试等待时间
retry.backoff.ms	#默认:100

#生产者发送的消息的压缩类型
compression.type	#默认:none

#客户端在阻塞之前将通过单个连接发送的未确认请求的最大数量
max.in.flight.requests.per.connection	#默认:5

#key/value的序列化方式
key.serializer
value.serializer

2.spring中使用kafka

  • 引入kafka原生jar

    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-clients</artifactId>
        <version>2.6.0</version>
    </dependency>
    
  • 客户端producer demo

    @Configuration
    public class KafkaConfig {
    
        @Value("lego.kafka.bootstrap.servers")
        private String kafkaBootstrapServers;
    
        @Bean
        public KafkaProducer kafkaProducer(){
            Properties properties = new Properties();
            properties.put("bootstrap.servers", kafkaBootstrapServers);
            properties.put("client.id", "lego-leju");
            properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
            properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
            properties.put("acks", "1");
            properties.put("retries", "3");
            return new KafkaProducer(properties);
        }
    }
    
    

3.springboot中使用kafka

  • 引入spring-kafka的jar

    <dependency>
        <groupId>org.springframework.kafka</groupId>
        <artifactId>spring-kafka</artifactId>
    </dependency>
    
  • 客户端producer demo

    #1.在springboot的properties配置文件中添加kafka配置项
    
    spring.kafka.bootstrap-servers=ip:host
    spring.kafka.client-id=test
    spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
    spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
    spring.kafka.producer.acks=1
    spring.kafka.producer.retries=3
    spring.kafka.template.default-topic=topic
    
    //直接注入kafkaTemplate的bean即可使用
    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值