• spring boot 整合kafka


    本文为博主原创,未经允许不得转载:

      1. 引入spring boot kafka依赖

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

      

      2.  application.yml配置如下:

      

    spring:
      kafka:
        bootstrap-servers: 112.125.26.68:9092,112.125.26.68:9093,112.125.26.68:9094
        producer: # 生产者
          retries: 3 # 设置大于0的值,则客户端会将发送失败的记录重新发送
          batch-size: 16384
          buffer-memory: 33554432
          acks: 1
          # 指定消息key和消息体的编解码方式
          key-serializer: org.apache.kafka.common.serialization.StringSerializer
          value-serializer: org.apache.kafka.common.serialization.StringSerializer
        consumer:
          group-id: default-group
          enable-auto-commit: false
          auto-offset-reset: earliest
          key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
          value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
        listener:
          # 当每一条记录被消费者监听器(ListenerConsumer)处理之后提交
          # RECORD
          # 当每一批poll()的数据被消费者监听器(ListenerConsumer)处理之后提交
          # BATCH
          # 当每一批poll()的数据被消费者监听器(ListenerConsumer)处理之后,距离上次提交时间大于TIME时提交
          # TIME
          # 当每一批poll()的数据被消费者监听器(ListenerConsumer)处理之后,被处理record数量大于等于COUNT时提交
          # COUNT
          # TIME | COUNT 有一个条件满足时提交
          # COUNT_TIME
          # 当每一批poll()的数据被消费者监听器(ListenerConsumer)处理之后, 手动调用Acknowledgment.acknowledge()后提交
          # MANUAL
          # 手动调用Acknowledgment.acknowledge()后立即提交,一般使用这种
          # MANUAL_IMMEDIATE
          ack-mode: manual_immediate

      

      3. 发送者代码:

      

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.kafka.core.KafkaTemplate;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class KafkaController {
    
        private final static String TOPIC_NAME = "my-replicated-topic";
    
        @Autowired
        private KafkaTemplate<String, String> kafkaTemplate;
    
        @RequestMapping("/send")
        public void send() {
            kafkaTemplate.send(TOPIC_NAME, 0, "key", "this is a msg");
        }
    
    }

      4. 消费者代码:

      

    import org.apache.kafka.clients.consumer.ConsumerRecord;
    import org.springframework.kafka.annotation.KafkaListener;
    import org.springframework.kafka.support.Acknowledgment;
    import org.springframework.stereotype.Component;
    
    @Component
    public class MyConsumer {
    
        /**
         * @KafkaListener(groupId = "testGroup", topicPartitions = {
         *             @TopicPartition(topic = "topic1", partitions = {"0", "1"}),
         *             @TopicPartition(topic = "topic2", partitions = "0",
         *                     partitionOffsets = @PartitionOffset(partition = "1", initialOffset = "100"))
         *     },concurrency = "6")
         *  //concurrency就是同组下的消费者个数,就是并发消费数,必须小于等于分区总数
         * @param record
         */
        @KafkaListener(topics = "my-replicated-topic",groupId = "zhugeGroup")
        public void listenZhugeGroup(ConsumerRecord<String, String> record, Acknowledgment ack) {
            String value = record.value();
            System.out.println(value);
            System.out.println(record);
            //手动提交offset
            ack.acknowledge();
        }
    
        /*//配置多个消费组
        @KafkaListener(topics = "my-replicated-topic",groupId = "tulingGroup")
        public void listenTulingGroup(ConsumerRecord<String, String> record, Acknowledgment ack) {
            String value = record.value();
            System.out.println(value);
            System.out.println(record);
            ack.acknowledge();
        }*/
    }
  • 相关阅读:
    北亚一例服务器硬盘故障的数据恢复案例研究
    Syabse数据库无法启动的解决方案
    raid5 阵列硬盘离线数据恢复成功案例
    MSSQL 2000 错误823恢复案例
    服务器数据恢复案例
    虚拟机数据丢失的数据恢复过程和数据恢复方法
    数据库打开时报错该如何解决
    误删除导致文件系统中的邮件丢失的数据恢复过程
    第16月第25天 tableView设置UITableViewStyleGrouped顶部有空余高度
    第16月第24天 find iconv sublime utf-8
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/15024521.html
Copyright © 2020-2023  润新知