{"repo":"studeyang/easykafka","free":true,"listed":false,"github":"https://github.com/studeyang/easykafka","clone":"git clone https://github.com/studeyang/easykafka.git","description":"Make kafka easier to use.（基于 Spring Kafka 增强，让消息收发更简单）","language":"Java","stars":14,"topics":["kafka","spring-kafka"],"license":"MIT","category":"data-pipelines","readme_excerpt":"Deutsch English Español français 日本語 한국어 Português Русский 中文 EasyKafka 基于 Spring Kafka 的轻量级增强框架，让消息的发送与接收更简单。 目录 - 一、简介 - 二、开发环境 - 三、快速开始 - 3.1 发送消息 - 3.2 消费消息 - 四、核心功能 - 4.1 消息类型 - 4.2 消息注解 - 4.3 发送回调 - 4.4 泛型发送（ObjectPublisher） - 4.5 多集群与灰度路由 - 4.6 自动重试 - 五、配置参考 - 5.1 集群配置 - 5.2 生产者运行时配置 - 5.3 消费者运行时配置 - 5.4 完整配置示例 - 六、架构说明 - 七、构建与测试 --- 一、简介 EasyKafka 是基于 Spring Kafka 的增强框架，原 Spring Kafka 所有功能完全适配。 核心目标：使消息的发送和接收更简单。 主要解决以下问题： - 简化发送流程 ：一行代码发送消息，无需手动构建 ProducerRecord - 简化消费接入 ：通过 @EventHandler + @KafkaHandler 注解即可完成消费者注册 - 统一消息重试 ：内置 3 次重试，指数退避策略（100ms → 5000ms），无需手动处理 - 多集群支持 ：在同一应用中同时接入多个 Kafka 集群 - 灰度路由 ：自动区分基线/灰度环境，消息精准路由到对应集群 --- 二、开发环境 依赖 版本 ------ ------ Java 1.8+ Maven 3.6.3+ Spring Boot 2.4.3+ --- 三、快速开始 3.1 发送消息 完整示例：EventPublisherTest 1. 引入依赖 2. 配置 Kafka 集群 3. 定义消息 4. 发送消息 --- 3.2 消费消息 完整示例：MultiMethodEventHandler 1. 引入依赖 2. 实现消费逻辑 --- 四、核心功能 4.1 消息类型 EasyKafka 提供三种基础消息类型，所有消息类型均继承自 AbstractMessage ： 类型 说明 使用场景 ------ ------ ---------- Event 标准领域事件 业务事件通知（订单创建、支付完成等） Broadcast 广播消息 一对多通知（配置变更、缓存刷新等） DataSync 数据同步消息 跨服务数据同步 框架在发送前自动填充以下字段： 字段 说明 ------ ------ messageId 唯一消息 ID（UUID） messageKey Kafka Record Key（来自 @MessageKey 注解字段） messageHeader Kafka Headers（来自 @MessageHeader 注解字段） messageTag 路由标签（BASE / GRAY） messageService 来源服务名 messageTopic Topic 元数据（集群名 + Topic 名） messageCreateTime 消息创建时间 --- 4.2 消息注解 @Topic 标注在消息类上，声明消息所属的 Kafka 集群和 Topic 名称。 属性 类型 必填 说明 ------ ------ ------ ------ cluster String 是 逻辑集群名称，需与配置中的 cluster 对应 name String 是 Kafka Topic 名称 --- @","default_branch":null,"files":null,"tree":[],"storefront":"/r/studeyang","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/studeyang/easykafka/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}