Kafka 集成测试报告
1. 测试范围
对应文件:test/Air.Cloud.IntegrationTest/Modules/Kafka/KafkaRealBrokerIntegrationTests.cs。
目标是连接真实 Kafka Broker,验证 Air.Cloud.Modules.Kafka 在真实消息队列环境下的发布、消费、Key 类型、失败补偿和坏消息恢复能力。
2. 测试环境
| 配置项 | 当前值 |
KafkaIntegration:RunKafkaTests | true |
KafkaIntegration:BootstrapServers | 192.168.100.156:9092 |
KafkaIntegration:TopicPrefix | air-cloud-it |
KafkaIntegration:TimeoutSeconds | 30 |
3. 测试内容与边界
发布与消费 Key 类型
| 测试目标 | 边界内入参 | 边界外 / 异常入参 | 预期结果 |
int Key 发布消费 | Topic 后缀 int-key,消息内容为测试载荷,Key 类型为 int | 无 | 消息可被真实 Broker 投递并被消费者消费,内容一致。 |
string Key 发布消费 | Topic 后缀 string-key,Key 类型为 string | 非默认 Key 类型 | 消息可被消费,证明 Key 生成与序列化不局限于 int。 |
消费失败补偿
| 测试目标 | 边界内入参 | 边界外 / 异常入参 | 预期结果 |
| 处理超时补偿 | MessageHandlingTimeout = 100ms,业务处理 Thread.Sleep(2s),消息 timeout-payload | 业务耗时超过处理超时 | 触发 IMessageQueueFailureCompensationStandard.OnFailedAsync,FailureReason = Timeout,IsTimeout = true。 |
| 处理异常补偿 | 消费处理主动抛出异常 | 业务异常 | 触发失败补偿,IsTimeout = false,异常上下文保留。 |
| 最大重试边界 | 超时测试中 MaxRetryCount = 0 | 不允许重试 | 第一次失败即进入补偿,避免测试被重试延迟干扰。 |
坏消息恢复
| 测试目标 | 边界内入参 | 边界外 / 异常入参 | 预期结果 |
| 坏 Key 记录上报 | 直接生产 Null Key 记录,消息内容 bad-key-payload | Key 无法按目标类型反序列化 | 上报失败补偿,不阻断消费者进程。 |
| 跳过坏消息后继续消费 | 坏消息后再发送 after-bad-key-payload | 前一条消息异常 | 后续正常消息仍可被消费。 |
消费者恢复上下文
| 测试目标 | 边界内入参 | 边界外 / 异常入参 | 预期结果 |
| 消费中断回调 | Kafka 消费过程中出现资源撤销、异常或订阅中断 | 消费者生命周期异常 | 顶层恢复抽象可接收 Topic、Group、Provider、异常原因。 |
| 消费恢复回调 | 消费者重新进入可消费状态 | 恢复事件 | 顶层恢复抽象可记录恢复上下文。 |
4. 测试结果
本报告已单独运行对应过滤命令,结果:5/5 通过。
5. 对应目标中间件版本
目标 Kafka Broker 地址为 192.168.100.156:9092。当前配置未声明服务端版本,报告不臆测具体 Kafka 版本。