订单管道
订单流向账单、发货和分析,每个服务都按自己的节奏读取同一个流。
只追加的事件流,支持消费者组、确认机制,并能自动恢复崩溃的消费者遗留的消息。
订单服务追加一个事件,并拿回它的 id。
使用真实 HotKV 命令和示例回复的动画演示。点击任意步骤即可跳转。 命令和回复保持英文,与您在 HotKV 中输入和看到的完全一致。
响应事件的服务需要的不只是一个队列。多个彼此独立的消费者都想要同样的事件,每个消费者组需要在多个实例之间分摊工作,而当某个实例手里拿着消息宕机时,必须有人发现并接管这些消息。
流是一个只追加的日志。每个消费者组独立读取它,把每条消息投递给组内的一个成员,并在该成员确认之前将消息保持为待处理状态。XAUTOCLAIM 把待处理过久的消息交给一个健康的消费者。
订单服务追加一个事件,并拿回它的 id。
XADD orders * type created order 1182 total 49.00账单和发货各有自己的组,各自都会收到这个事件。
XGROUP CREATE orders billing 0 MKSTREAM一个账单实例为其所在的组读取新消息,在消息到来之前一直阻塞。
XREADGROUP GROUP billing billing-1 COUNT 10 BLOCK 5000 STREAMS orders >发票创建后,账单服务进行确认,消息离开其待处理列表。
XACK orders billing 1790985600123-0一个发货实例手里拿着消息宕机了。空闲 60 秒后,这些消息被一个健康的实例认领。
XAUTOCLAIM orders shipping shipping-2 60000 0-0 COUNT 25订单流向账单、发货和分析,每个服务都按自己的节奏读取同一个流。
用户操作被追加到流中,任何需要历史记录的服务都可以重放。
设备消息缓存在流中,由一组随负载伸缩的 worker 处理。
条目获得按时间排序的 id,可按长度或时间修剪。
XADDXTRIM每个组都能收到所有消息,并在组内成员之间分摊工作。
XGROUPXREADGROUP消息在被确认之前一直保持待处理状态。
XACKXPENDING空闲过久的消息由另一个消费者认领。
XAUTOCLAIMXCLAIM可以。XRANGE 按 id 读取流的任意部分,新的消费者组也可以从头开始读取。
用 XTRIM 修剪,或在 XADD 中使用 MAXLEN 或 MINID 选项。
XADD 支持幂等生产者 id(IDMP),重试的发布不会产生第二个条目。请参阅 XADD 参考。