From f9bbc0721c453cb816c8840214889c9bbdd55bc5 Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Thu, 16 Jul 2026 14:02:04 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20tag=20=E5=B0=8F=E8=8A=82=E8=A1=A5?= =?UTF-8?q?=E3=80=8C=E5=90=8C=20group=20=E8=AE=A2=E9=98=85=E5=BF=85?= =?UTF-8?q?=E9=A1=BB=E4=B8=80=E8=87=B4=E3=80=8D=E7=A1=AC=E8=A7=84=E5=88=99?= =?UTF-8?q?=EF=BC=88=E7=BB=88=E5=AE=A1=20Important=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 同组配不同 tag 会互相 ACK 吞掉对方消息(静默丢),README 此前只示范 按 tag 分流却未写分流必须各用各的 group;rocketmq 生态同款规则 (订阅关系不一致),两端皆然。 Co-Authored-By: Claude Fable 5 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a872249..025ad9b 100644 --- a/README.md +++ b/README.md @@ -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 生态称之为「订阅关系不一致」)。 ## 进阶用法