当前位置: 首页 > 面试题库 >

支持Redis Pub / Sub上的竞争消费者吗?

方坚壁
2023-03-14
问题内容

我有2个服务。他们两个都需要订阅相同的频道。

这两个服务是负载平衡的。每个服务都在多个服务器上运行。

因此,如何确定每个服务只有1个实例消耗该通道的消息。

Redis支持此功能吗?

谢谢


问题答案:

Pubsub不能这样工作-
消息会发送到所有已连接的已订阅客户端。但是,您可以对其进行设置,以使该频道是列表更新的通知。这样,所有客户端都会收到消息,但是只有一个客户端可以使用LPOP从列表中接收邮件。



 类似资料:
  • 我正在尝试使用Akka和Camel的竞争性事件消费者实现。我使用Akka 2.3.2和Camel 5.8.0。我正在将camel连接到ActiveMQ代理,并使用生产者从另一端生成消息。在以下代码中,EventManager是创建消费者池的主机,Event处理器是消息处理演员。 EventManager.java EventProcessor.java 我看到的问题是,消息似乎被单个参与者使用,而

  • 我已经用MassTransit实现了一个简单的发布者/使用者集,我想让使用者从同一个队列中读取消息。但是,当我运行它时,我看到很大一部分消息被发送到错误队列,而不是被消耗。从我看到的讨论(所以,论坛)来看,对于RabbitMQ来说,这应该非常非常简单(只需指向相同的队列),但它并不起作用。是否有应该设置的附加配置? 这是我的出版商 还有我的消费者

  • 我成功地建立了一个话题交换,并且能够同时向几个消费者传递消息。 我还想向竞争对手传递信息,并继续使用主题交换。我了解到,使用相同的队列名称可以让消费者竞争消息。然而,我可能弄错了,因为我无法使它工作。 为同一主题的多个侦听器设置: < li >申报话题交流 < li >对于每个侦听器,用自动生成的名称声明一个新队列 < li >用给定的主题路由关键字将此队列绑定到上面的交换 如何将相互竞争的消费者

  • 例如生产比较慢,而消费比较快,就会导致消费者消费到错误数据 package main import ( "fmt" "math/rand" "sync" "time" ) // 创建一把互斥锁 var lock = sync.Mutex{} // 定义缓冲区 var sce []int = make([]int, 10) // 定义生产者 fun

  • 是否有一种方法以编程方式访问和打印使用者滞后偏移,或者说使用者读取的最后一条记录的偏移与某个生产者写入该使用者分区的最后一条记录的偏移之间的位置差。 要知道我的最终目标是将这个值发送到prometheus进行监视,我应该在上面添加哪些语句来得到滞后偏移值?

  • 我花了几个小时想弄清楚发生了什么,但没能找到解决办法。 这是我在一台机器上的设置: 1名zookeeper跑步 我正在使用kafka控制台生成器插入消息。如果我检查复制偏移量(