sprintboot 订阅kafka消息队列 group-id的用法

概念:
consumer 消费者
producer 生产者
broker 节点
offset 消费进度 独立于每个消费组
groupId 消费组 同一groupId下,消息只能被消费一次
yml配置:

spring:
  kafka:
    bootstrap-servers: 192.168.214.128:9092
    #       bootstrap-servers: 112.94.4.34:9092
    #=============== provider  =======================
    producer:
      retries: 0
      # 每次批量发送消息的数量
      batch-size: 16384
      buffer-memory: 33554432

      # 指定消息key和消息体的编解码方式
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.ByteArraySerializer

    #=============== consumer  =======================
    consumer:
      #如果存在已经提交的offest时,不管设置为earliest 或者latest 都会从已经提交的offest处开始消费
      #如果不存在已经提交的offest时,earliest 表示从头开始消费,latest 表示从最新的数据消费,也就是新产生的数据.
      #默认latest
      auto-offset-reset: earliest
      enable-auto-commit: true
      auto-commit-interval: 100

      # 指定消息key和消息体的编解码方式
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.ByteArrayDeserializer

消息监听类

@Component
@Slf4j
public class MessageListener {

    @KafkaListener(topics ="mykafka",groupId = "test")
    public  void MessageListener(ConsumerRecord<?, ?> message){
        Optional<?> tcpMessageModelOptional= BKafkaConsumer.messageDeserializer(message);
        if(tcpMessageModelOptional.isPresent()){
            String messageModel=(String)tcpMessageModelOptional.get();
            log.info("0消费到消息:{}",messageModel);
        }
    }

    @KafkaListener(topics ="mykafka",groupId = "test1")
    public  void MessageListener1(ConsumerRecord<?, ?> message){
        Optional<?> tcpMessageModelOptional= BKafkaConsumer.messageDeserializer(message);
        if(tcpMessageModelOptional.isPresent()){
            String messageModel=(String)tcpMessageModelOptional.get();
            log.info("1消费到消息:{}",messageModel);
        }
    }


    @KafkaListener(topics ="mykafka")
    public  void MessageListener3(ConsumerRecord<?, ?> message){
        Optional<?> tcpMessageModelOptional= BKafkaConsumer.messageDeserializer(message);
        if(tcpMessageModelOptional.isPresent()){
            String messageModel=(String)tcpMessageModelOptional.get();
            log.info("3消费到消息:{}",messageModel);
        }
    }
    

}

@KafkaListener不指定groupId的话 需要在配置文件中指定默认groupId

spring.kafka.consumer.group-id: test-group
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用Spring Boot实现Kafka生产者和死信队列的步骤: 1.在pom.xml文件中添加KafkaSpring Kafka依赖: ```xml <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.7.2</version> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.8.0</version> </dependency> ``` 2.在application.properties文件中配置Kafka: ```properties spring.kafka.bootstrap-servers=localhost:9092 spring.kafka.consumer.group-id=my-group spring.kafka.consumer.auto-offset-reset=earliest spring.kafka.consumer.properties.max.poll.interval.ms=60000 spring.kafka.consumer.properties.max.poll.records=100 spring.kafka.consumer.properties.max.partition.fetch.bytes=1048576 spring.kafka.consumer.properties.fetch.max.bytes=5242880 spring.kafka.consumer.properties.fetch.min.bytes=1 spring.kafka.consumer.properties.fetch.max.wait.ms=500 spring.kafka.consumer.properties.session.timeout.ms=30000 spring.kafka.consumer.properties.enable.auto.commit=true spring.kafka.consumer.properties.auto.commit.interval.ms=5000 spring.kafka.consumer.properties.isolation.level=read_committed spring.kafka.consumer.properties.value.deserializer=org.apache.kafka.common.serialization.StringDeserializer spring.kafka.producer.properties.value.serializer=org.apache.kafka.common.serialization.StringSerializer ``` 3.创建一个Kafka生产者: ```java @Service public class KafkaProducerService { @Autowired private KafkaTemplate<String, String> kafkaTemplate; public void sendMessage(String topic, String message) { kafkaTemplate.send(topic, message); } } ``` 4.创建一个Kafka消费者: ```java @Service public class KafkaConsumerService { @KafkaListener(topics = "my-topic") public void receiveMessage(String message) { // 处理消息 } @KafkaListener(id = "my-group", topics = "my-topic-dlq") public void receiveDlqMessage(String message) { // 处理死信队列消息 } } ``` 5.在application.properties文件中配置死信队列: ```properties spring.kafka.listener.type=single spring.kafka.listener.poll-timeout=5000 spring.kafka.listener.concurrency=1 spring.kafka.listener.ack-mode=manual_immediate spring.kafka.listener.retry-template.max-attempts=3 spring.kafka.listener.retry-template.back-off=1000 spring.kafka.listener.retry-template.multiplier=2.0 spring.kafka.listener.retry-template.max-interval=60000 spring.kafka.listener.retry-template.exponential-backoff=true spring.kafka.listener.retry-template.initial-interval=1000 spring.kafka.listener.retry-template.retry-policy=SIMPLE_RETRY spring.kafka.listener.retry-template.stateful-retry=true spring.kafka.listener.retry-template.include-headers=true spring.kafka.listener.retry-template.max-time=60000 spring.kafka.listener.retry-template.recovery-callback-class=org.springframework.kafka.listener.SeekToCurrentErrorHandler spring.kafka.listener.retry-template.recovery-callback-method=recover spring.kafka.listener.retry-template.back-off-strategy=org.springframework.kafka.backoff.ExponentialBackOff spring.kafka.listener.retry-template.back-off-strategy.max-interval=60000 spring.kafka.listener.retry-template.back-off-strategy.initial-interval=1000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.max-attempts=3 spring.kafka.listener.retry-template.back-off-strategy.exponential=true spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-interval=1000 spring.kafka.listener.retry-template.back-off-strategy.max-interval=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta=1000 spring.kafka.listener.retry-template.back-off-strategy.initial-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.multiplier=2.0 spring.kafka.listener.retry-template.back-off-strategy.randomization-factor=0.5 spring.kafka.listener.retry-template.back-off-strategy.max-interval-factor=2.0 spring.kafka.listener.retry-template.back-off-strategy.min-duration=1000 spring.kafka.listener.retry-template.back-off-strategy.max-duration=60000 spring.kafka.listener.retry-template.back-off-strategy.delta

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值