MonSvc(1..N),它检测更改并发布这些更改。LoggerSvc和Enforcement-Svc) --注意:消费者服务需要所有更新,而且不能错过更新。我正在使用Redis作为我的协调员(代理),但我对如何实现它感到有点困惑。
选项1:每个MonSvc#发布更新到Redis,而监视器服务订阅
此设计失败,因为如果消费者服务出现故障,它可能会错过稍后无法检索的更新
选项2:每个MonSvc# Enqueue更新到Redis列表(队列),而使用者则从队列中获取元素
消费者并不会接受所有的更新,但是每个用户都会得到一个部分列表。
选项3:每个MonSvc#队列更新到多个Redis列表(队列)(队列/消费者),而使用者从队列中获取元素
这很好,但似乎扩展得很差(MonSvc#需要知道它发布给了多少人)
如何使用Redis建立一个“多发布者>>多消费者队列”(或者我应该使用更强大的代理?)
发布于 2020-01-30 19:33:05
您正在寻找Redis流与消费者组,介绍在Redis 5.0。见此处:https://redis.io/topics/streams-intro
有一个很好的免费这是雷迪斯大学的课程,推荐。
使用Redis流,您可以实现至少一次的交付语义。
请参阅关键的使用者组命令:
XGROUP用于创建、销毁和管理使用者组。XREADGROUP用于通过使用者组从流中读取数据。XACK是允许使用者将挂起的消息标记为正确处理的命令。https://stackoverflow.com/questions/59993081
复制相似问题