首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MultiPublisher-使用Redis的多用户队列

MultiPublisher-使用Redis的多用户队列
EN

Stack Overflow用户
提问于 2020-01-30 19:19:59
回答 1查看 204关注 0票数 1
  1. 我有多个监视服务MonSvc(1..N),它检测更改并发布这些更改。
  2. I操作这些更新的多个服务(例如,LoggerSvcEnforcement-Svc) --注意:消费者服务需要所有更新,而且不能错过更新。

我正在使用Redis作为我的协调员(代理),但我对如何实现它感到有点困惑。

选项1:每个MonSvc#发布更新到Redis,而监视器服务订阅

此设计失败,因为如果消费者服务出现故障,它可能会错过稍后无法检索的更新

选项2:每个MonSvc# Enqueue更新到Redis列表(队列),而使用者则从队列中获取元素

消费者并不会接受所有的更新,但是每个用户都会得到一个部分列表。

选项3:每个MonSvc#队列更新到多个Redis列表(队列)(队列/消费者),而使用者从队列中获取元素

这很好,但似乎扩展得很差(MonSvc#需要知道它发布给了多少人)

如何使用Redis建立一个“多发布者>>多消费者队列”(或者我应该使用更强大的代理?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-30 19:33:05

您正在寻找Redis流与消费者组,介绍在Redis 5.0。见此处:https://redis.io/topics/streams-intro

有一个很好的免费这是雷迪斯大学的课程,推荐。

使用Redis流,您可以实现至少一次的交付语义。

请参阅关键的使用者组命令:

  • XGROUP用于创建、销毁和管理使用者组。
  • XREADGROUP用于通过使用者组从流中读取数据。
  • XACK是允许使用者将挂起的消息标记为正确处理的命令。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59993081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档