首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pub/Sub Redis,是否可以监控是否有已发布的消息被消费?

Pub/Sub Redis,是否可以监控是否有已发布的消息被消费?
EN

Stack Overflow用户
提问于 2015-02-02 14:38:17
回答 2查看 3.8K关注 0票数 1

我有一个redis实例,它通过不同的主题发布消息。除了实现复杂的心跳机制(之所以复杂,因为如果消息未被使用,实例将在一段时间后停止发布消息),是否有一种方法可以检查是否有人使用了pub?

例如,实例RedisServertopic1topic2发布消息。RedisClient1订阅topic1RedisClient2订阅topic2。无论出于什么原因,当RedisClient2停止使用topic2的消息时,我希望RedisServer知道这一点,并决定何时停止向topic2发布消息。topic2消费的中断是不可预测的,因此我无法通知RedisServer停止/取消订阅。

我想,如果有一种方法可以让redis实例知道某个主题的消息是否被消费,那么这将是非常有用的信息。

你知道这是否可能吗?

EN

回答 2

Stack Overflow用户

发布于 2015-02-02 17:07:12

假设您使用的是redis的最新版本(> 2.8.0),这两个命令可能会对您有所帮助:

代码语言:javascript
复制
PUBSUB CHANNELS [pattern]

其列出与该模式匹配的当前活动信道(=具有至少一个订户的信道)。

代码语言:javascript
复制
PUBSUB NUMSUB [chan1 ... chanN]

它返回指定频道的订阅者数量(但不适用于模式)。

注意:这两种解决方案都不能让您确定消息是否得到了真正的处理!如果你需要知道任务的完成情况(如果你的消息触发了什么),那么我建议你搜索一个完整的作业队列(例如Resque,如果你想继续使用Redis)

编辑:这是Redis文档。对于以上所有内容:http://redis.io/commands/pubsub

票数 3
EN

Stack Overflow用户

发布于 2015-02-02 17:50:02

您还可以使用发布的结果。它将为您提供收到消息的订阅者数量:http://redis.io/commands/publish

这样,您不需要轮询PUBSUB命令,只需在发布消息后执行“停止发布”消息逻辑即可。

最多只能发布一条消息,没有人订阅。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28272317

复制
相关文章

相似问题

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