v4.0 天翼 driver-ctwing-mq
-
@Zhang书书 两张表的配置几乎一摸一样,只有脚本里的logger输出加了区分标记。
![6a172065-afde-41f6-8451-f01137373c3f-image.png]
这种情况同样出现在两种设备同时使用同一个tcpserver驱动服务下。本质问题还是一样的。
同一个驱动服务应用在不同的设备(表)时,同一个消息数据只能被一种设备(设备的脚本)使用(如果每次同一个消息数据被分发到同一个驱动服务下所有设备(设备脚本)中是满足的我的使用的,但是现在不是),最重要的这个数据的使用是混乱的,即有时候这个设备消费有时候另一个设备消费。
-
Pulsar 消费模式
Apache Pulsar 提供了多种灵活的消费模式,以满足不同场景下的消息处理需求。以下是 Pulsar 的主要消费模式:
1. 独占模式 (Exclusive)
- 特点:一个订阅只允许一个消费者消费消息
- 行为:如果多个消费者尝试使用相同的订阅连接到主题,只有第一个消费者能成功连接,其他消费者会收到错误
- 适用场景:需要严格顺序处理的场景
2. 故障转移模式 (Failover)
- 特点:多个消费者可以附加到同一订阅,但只有一个主消费者能接收消息
- 行为:当主消费者断开连接时,消息会传递给下一个消费者(按优先级顺序)
- 适用场景:需要消费者高可用的场景
3. 共享模式 (Shared / Round Robin)
- 特点:多个消费者可以共享同一订阅,消息以轮询方式分发给消费者
- 行为:消息被均匀分配给所有可用的消费者
- 注意:不保证消息顺序
- 适用场景:需要水平扩展消费能力的场景
4. Key_Shared 模式 (Key-Shared)
- 特点:多个消费者共享订阅,但相同键的消息总是路由到同一个消费者
- 行为:保证相同键的消息顺序,同时允许水平扩展
- 适用场景:需要按键保证顺序且需要扩展消费能力的场景
消费确认机制
Pulsar 支持两种确认模式:
- 单条确认 (Individual Ack):显式确认单条消息
- 累积确认 (Cumulative Ack):确认某条消息及其之前的所有消息
其他消费特性
- 重试队列:处理失败的消息可以发送到重试队列
- 死信队列:超过最大重试次数的消息会被发送到死信队列
- 消息重放:消费者可以重置游标以重新消费消息
- 批处理消费:支持批量消息的发送和消费
选择哪种消费模式取决于您的具体需求,包括消息顺序要求、消费能力扩展需求以及容错需求等。
-
这个不一定
这个主要看实际用的协议一个tcpserver实际上一个tcp服务器, 对外只有1个端口, 所以脚本在驱动实例上, 收到数据处理后, 返回的时候通过表id, 设备id来确定数据应该保存到哪个设备下
mqtt驱动, 目前有2种模式, 如果在驱动实例配置中, 选了"只使用实例主题和脚本", 那这个驱动程序就只用驱动实例的配置, 启动一个mqtt客户端接收数据, 然后用驱动实例的脚本进行解析
不选"只使用实例主题和脚本"的情况下, 每个选了这个驱动的设备表, 单独启动一个mqtt客户端, 用表里的脚本进行解析(如果表脚本为空, 脚本用驱动实例的, 其他逻辑不变), 这个情况下, 每个客户端都能收到订阅的消息, 表现就是每个表的脚本都能收到消息天翼云的消息队列是pulsar, 平台是每个表启动一个客户端, 但是定义同一个topic时, 消息是分发的, 这个是pulsar的特性.