Kafka接收消息

文章目录

java 复制代码
// 采用监听得方式接收 @Payload标记消息体内容.
@KafkaListener(topics = {"test"},groupId = "hello")
public void onEvent(@Payload String event,
                   @Header(value = KafkaHeaders.RECEIVED_TOPIC) String topic,
                   @Header(value = KafkaHeaders.RECEIVED_PARTITION_ID) String partition){
   System.out.println("读取到了时间消息: " + event);
}

Acknowledgment

开启手动确认模式;

java 复制代码
listener:
	ack-mode: manual
java 复制代码
// 采用监听得方式接收 @Payload标记消息体内容.
@KafkaListener(topics = {"test"},groupId = "hello")
public void onEvent(@Payload String event,
                   @Header(value = KafkaHeaders.RECEIVED_TOPIC) String topic,
                   @Header(value = KafkaHeaders.RECEIVED_PARTITION_ID) String partition,
                   ConsumerRecord<String,String> record,
                   Acknowledgment ack){
   ack.acknowledge(); // 手动确认,告诉kafka服务器该消息我已经收到了. 
   System.out.println("读取到了时间消息: " + event);
}

读消息指定分区

java 复制代码
@KafkaListener(groupId = "hello",
           topicPartitions = {
               @TopicPartition(
                       topic = "${kafka.topic.test}",
                       partitions = {"0","1","2"}, // 0 1 2分区不限制偏移量
                       partitionOffsets = { // 3 分区只读 3偏移量之后的; 4分区只读 4偏移量之后的
                               @PartitionOffset(partition = "3",initialOffset = "3"),
                               @PartitionOffset(partition = "4",initialOffset = "3")
                       })
           }
)

批量消费

修改配置

java 复制代码
kafka:
    bootstrap-servers: 192.168.225.128:9092
    listener:
      type: batch
    # 每次读取20条
    consumer:
      max-poll-records: 20

消费者端接收一个List即可

java 复制代码
@KafkaListener(topics = {"hi"},groupId = "batchGroup2")
public void onEvent3(List<ConsumerRecord<String,String>> records){
    System.out.println(records.size());
}

消息拦截

相关推荐
计算机毕设定制辅导-无忧学长6 小时前
西门子 PLC 与 Modbus 集成:S7-1500 RTU/TCP 配置指南(一)
服务器·数据库·tcp/ip
程序员柳7 小时前
基于微信小程序的校园二手交易平台、微信小程序校园二手商城源代码+数据库+使用说明,layui+微信小程序+Spring Boot
数据库·微信小程序·layui
ZHOU_WUYI7 小时前
一个简单的分布式追踪系统
分布式
梦在深巷、7 小时前
MySQL/MariaDB数据库主从复制之基于二进制日志的方式
linux·数据库·mysql·mariadb
IT乌鸦坐飞机7 小时前
ansible部署数据库服务随机启动并创建用户和设置用户有完全权限
数据库·ansible·centos7
IT_10247 小时前
Spring Boot项目开发实战销售管理系统——数据库设计!
java·开发语言·数据库·spring boot·后端·oracle
祁思妙想8 小时前
八股学习(三)---MySQL
数据库·学习·mysql
惊骇世俗王某人9 小时前
1.MySQL之如何定位慢查询
数据库·mysql
秦歌6669 小时前
向量数据库-Milvus快速入门
数据库·milvus
Edingbrugh.南空10 小时前
Flink SQLServer CDC 环境配置与验证
数据库·sqlserver·flink