docs: tag 小节补「同 group 订阅必须一致」硬规则(终审 Important 修复)
同组配不同 tag 会互相 ACK 吞掉对方消息(静默丢),README 此前只示范 按 tag 分流却未写分流必须各用各的 group;rocketmq 生态同款规则 (订阅关系不一致),两端皆然。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -129,6 +129,7 @@ public void onFile(FileData msg) { } // 只收 tag=node-01 的消息,
|
||||
- 消费端不写 `tag` 默认 `*`,整个 topic 全收;发送端用两参 `send` 则消息不带 tag——**对端若按 tag 过滤,不带标签的消息它收不到**,跨系统对接时这是个经典坑。
|
||||
- rocketmq 模式:过滤发生在 **broker 服务端**,不匹配的消息根本不会投到消费者;tag 表达式直接透传 RocketMQ 原生语法,`"A || B"` 多选一也支持。
|
||||
- redis-stream 模式:**消费端模拟过滤**——driver 收到消息后按订阅 tag 比对,不匹配的直接 ACK 丢弃、不进消费链(不碰去重、不算重试、不落库),支持与 rocketmq 相同的写法子集(`*` 全收、单 tag 精确、`A || B` 多选一)。与 rocketmq 的差别只剩过滤位置与成本:消息会先走一趟网络到消费端才被丢弃。
|
||||
- **同一 group 的所有订阅必须用同一个 tag 表达式**(含滚动发布期间的新旧实例)——要按 tag 分流,就各用各的 group。同组配不同 tag 时,消息只会投给组内某一个消费者,拿到"不归自己"消息的那个会直接 ACK 吞掉,对方永远收不到(两端皆然,rocketmq 生态称之为「订阅关系不一致」)。
|
||||
|
||||
## 进阶用法
|
||||
|
||||
|
||||
Reference in New Issue
Block a user