Commit Graph

9 Commits

Author SHA1 Message Date
f4793b10c0 fix(mq-starter-rocketmq): 消费捕获 MqMessageInProgressException 返回 RECONSUME_LATER,杜绝处理中消息被耗尽落库+ACK 静默丢弃
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 02:54:09 +01:00
29473e6fef feat(mq-starter-rocketmq): 重试耗尽回调 retryExhaustedHandler 落库并 ACK,maxRetry 对齐 @MqListener
对齐 redis-stream 的 reclaim 耗尽语义,兑现"换 MQ 业务不动"契约:此前 rocketmq
只有 broker 默认 16 次重投、无 RETRY_EXHAUSTED 落库。

- setMaxReconsumeTimes 对齐 @MqListener(maxRetry)(缺省 3),不再用 broker 默认 16
- 抽出 consumeBatch:reconsumeTimes 达 maxRetry 时回调 retryExhaustedHandler 落库并 ACK 终止;未达则 RECONSUME_LATER
- onRetryExhausted 落库 best-effort:毒消息 payload 反序列化失败时留 null、至少保留 key/tag,并隔离 handler 自身异常
- 补消费逻辑单测(耗尽落库 / 未耗尽重投 / 成功投递)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 20:41:39 +08:00
886c02ff96 fix(mq-starter): 修复启动 fail-fast 校验 review 发现的缺陷(relaxed binding / 逃生开关 / redis 假地址)
workflow 多智能体 review 后修复:

- rocketmq 探测改用 Binder 读 rocketmq.name-server,与 driver(RocketMQProperties)同源、
  享受 relaxed binding,修复 camelCase(rocketmq.nameServer) 被误判为「未配置」而错误 fail-fast
- MqStartupChecks 逃生开关只认严格 false(忽略大小写/空白),缺省或非法值一律继续校验,
  不再因非法布尔值(如 enabled=disabled)抛类型转换异常炸掉启动
- redis 探测 target() 对 cluster/sentinel 回退到指向真实配置项的文案,
  不再假报使用者从未配过的 localhost:6379
- 补齐回归测试:camelCase 键 / 非法开关值继续校验 / host:port 提示分支 / cluster 回退
  (core 5、redis-stream 5、rocketmq 5,全绿)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 14:06:05 +08:00
0c6d37842e fix(mq-starter-rocketmq): 导入 spring-boot BOM 统一 spring 版本(修既有 5.2.15↔5.3 裂开,Task3 测试可运行) 2026-07-09 11:20:24 +08:00
d7ef8b5626 feat(mq-starter-rocketmq): 启动期 TCP 探测 NameServer 连通性(①② fail-fast) 2026-07-09 11:05:00 +08:00
e5991718e6 test(mq-starter): driver autoconfig 加 @AutoConfigureBefore 注解契约护栏
Rocket / RedisStream driver autoconfig 各加一个护栏测试,断言
@AutoConfigureBefore(MqCoreAutoConfiguration) 注解存在——防止重构误删导致 core 在
driver 前装配、MqTemplate/MqListenerRegistry 不装配的回归(最终 review I1)。
以注解契约守护、不 refresh context(规避本模块 spring 版本不一致:rocketmq-spring
2.2.3 与父 pom spring-boot 2.3.12 的 spring-core 缺 ApplicationStartup);真实装配
结果由 cn-data-platform MqSliceWiringTest 在正确 spring 版本下覆盖。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 14:08:26 +08:00
9f6ffad77c fix(mq-starter): driver autoconfig 加 @AutoConfigureBefore(MqCoreAutoConfiguration)
真实 autoconfig 顺序按类名字母序,com.njcn.mq.autoconfig.MqCoreAutoConfiguration
先于 com.njcn.mq.driver.* 处理,core 的 @ConditionalOnBean(MqDriver) 在 driver
bean 注册前求值失败,导致 MqTemplate / MqListenerRegistry 在真实应用中均不装配。
两个 driver autoconfig 各加 @AutoConfigureBefore(MqCoreAutoConfiguration.class),
保证 driver 先于 core 装配。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 12:01:41 +08:00
597b872b4f feat(mq-starter-rocketmq): rocket driver 发送(模板)+编程式消费(DefaultMQPushConsumer)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 05:25:55 +08:00
491b83de94 feat(mq-starter): 多模块脚手架 + core 信封/SPI/注解
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 04:41:54 +08:00