gpt4 book ai didi

redis - 使用Redis的MultiPublisher-MultiConsumer队列

转载 作者:行者123 更新时间:2023-12-03 06:41:25 25 4
gpt4 key购买 nike

  • 我有多个Monitoring Service MonSvc(1..N),用于检测更改并发布这些更改。
  • 我对这些更新进行操作的多种服务(例如LoggerSvcEnforcement-Svc)

    Note: Consumer services needs all updates, and cannot miss an update.


  • 我使用Redis作为协调员(经纪人),但是我对应该如何实现它感到有些困惑。

    选项1:每个MonSvC#将更新发布到Redis Channel,而监视服务则订阅
    此设计失败,因为如果消费者服务中断,则它可能会丢失无法稍后检索的更新。

    选项2:每个MonSvC#入队更新到Redis列表(队列),而使用者从队列中获取元素
    消费者不会获取所有更新,但是每个都会获得部分列表。

    选项3:每个MonSvC#入队更新到多个Redis列表(队列)(队列/消费者),而使用者从队列中获取元素
    这可以正常工作,但是扩展性似乎很差(MonSvC#需要知道发布给谁+多少)

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

    最佳答案

    您正在寻找Redis 5.0中引入的带有消费者组的Redis流。看到这里:https://redis.io/topics/streams-intro

    有一个很好的免费course for this is Redis University,推荐。

    使用Redis Streams,您可以实现所需的至少一次传送语义。

    请参阅主要使用者组命令:

    • XGROUP is used in order to create, destroy and manage consumer groups.
    • XREADGROUP is used to read from a stream via a consumer group.
    • XACK is the command that allows a consumer to mark a pending message as correctly processed.

    关于redis - 使用Redis的MultiPublisher-MultiConsumer队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59993081/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com