消息队列集成
引用文件
本文引用的文件
- KafkaProperties.java
- application-common.yaml
- TenantKafkaEnvironmentPostProcessor.java
- yudao-spring-boot-starter-mq/pom.xml
- RedisMQTemplate.java
- AbstractRedisChannelMessage.java
- AbstractRedisStreamMessage.java
- AbstractRedisChannelMessageListener.java
- YudaoRedisMQConsumerAutoConfiguration.java
- RedisPendingMessageResendJob.java
- SmsSendMessage.java
- MailSendConsumer.java
- SmsSendConsumer.java
- docker-compose.yml
- instance.properties
- docker-run_local_ycs.md
目录
简介
本文件面向 yudao-cloud 的消息队列集成,聚焦 Kafka 在系统中的应用场景与实现细节,包括但不限于:
- 日志上报缓冲与异步处理
- 业务异步解耦与事件驱动架构
- 生产者实现方式、消息格式设计与分区策略
- 消费者处理逻辑、并发消费与幂等性保障
- 配置参数、性能调优与故障恢复
- 不同业务模块的消息处理模式与最佳实践
项目结构
围绕消息队列的关键模块与文件分布如下:
- Kafka 配置与主题定义:yudao-framework/yudao-spring-boot-starter-mq
- Kafka 运行环境与 Canal 集成:deploy/docker/kafka 与 deploy/docker/canal
- 系统模块的事件消费者:yudao-module-system
- Redis MQ(对比与补充):yudao-framework/yudao-spring-boot-starter-mq/redis
图表来源
章节来源
核心组件
- Kafka 配置与主题定义
- 自定义 Kafka 配置类集中定义主题名称,便于统一管理与扩展。
- Kafka 运行环境
- 使用 Bitnami Kafka 镜像,启用 SASL_PLAINTEXT 认证,提供控制器与 Broker 内部通信监听器。
- Canal 集成
- 通过 Canal 将 MySQL 变更事件路由到 Kafka,动态主题与分区策略按表/库维度配置。
- 系统模块事件消费者
- 基于 Spring 事件机制的异步消费者,处理短信与邮件发送等任务。
章节来源
- KafkaProperties.java
- docker-compose.yml
- instance.properties
- MailSendConsumer.java
- SmsSendConsumer.java
架构总览
下图展示 Kafka 在 yudao-cloud 中的典型工作流:Canal 将数据库变更写入 Kafka,应用模块通过消费者异步处理业务逻辑。
图表来源
组件详解
Kafka 配置与主题管理
- 配置类集中管理主题名称,便于跨模块共享与维护。
- 运行环境采用 Bitnami Kafka,启用 SASL_PLAINTEXT 并配置客户端用户名/密码。
- Canal 动态主题与分区策略按库/表正则表达式配置,支持按主键字段进行分区哈希。
图表来源
章节来源
Kafka 生产者与消费者配置
- 生产者与消费者使用 Spring Kafka 配置,生产者启用 JSON 序列化,消费者使用 JSON 反序列化与错误处理反序列化器。
- 消费组 ID、自动偏移重置策略、缺失主题容错等参数集中于配置文件。