> 馆藏中心

redis和mq的发布订阅是tcp的长连接,消费者会阻塞吗

来源:cnblogs 编辑:吕秀强

osql最近很火,我也研究研究,呵呵,今天来说说redis,简单的那些增删改查就不说了,网上太多了,我研究了一下,redis做消息队列 首先是用的redis的发布订阅做的消息队列实现消息www.179s.com防采集请勿采集本网。

1.redis和mq的发布订阅存在很大的区别,你还是详细了解一下吧,比如redis的发布订阅不会对发布的信息进行持久化;

2.mq有很多种(Kafka、RabbitMQ、RocketMQ..),每种可能有自己的特性

Redis 的 SUBSCRIBE 命令可以让客户端订阅任意数量的频道, 每当有新信息发送到被订阅的频道时, 信息就会被发送给所有订阅指定频道的客户端。作为例子, 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 cl

3.你说的长连接,是指的消费者拉取消息的长连接,还是消费者与服务器心跳的长连接?消费者什么情况下会阻塞呢?收获园豆:10

具体的业务还是得需要你自己定制。 你的需求实际上是一个变形的生产者-消费者实现。对于此类需求,主要是将请求和实际的处理过程解耦,一般都是采取异步的方式来通知请求方,这跟用不用redis其实没有多大的关系。一般的实现方法是你需要将用户的

============================================

你可以: 先把语音存储都某个地方,生成一个ID 然后利用Redis的订阅去分发这个ID 客户端接收到这个事件,去主动拉取这个ID的语音。 Redis订阅后是阻塞的,KILL掉这个进程就取消了 你这是要做APP么?移动网络不稳定,网络波动连接断开订阅就取消

消费者与服务器心跳的长连接,消费者等待生产者的消息是不是就会阻塞在那里

为什么会需要用这两组件交互呢? Redis,是一个缓存组件,可以提供key/value方式存储(一般是内存,也可以刷到磁盘上,看需求与调整配置),数据存储结构基于hash。redis还有另外一种通讯模型,pulish/subscibe(发布/订阅模型)。连接/操作方式提

============================================

你可以: 先把语音存储都某个地方,生成一个ID 然后利用Redis的订阅去分发这个ID 客户端接收到这个事件,去主动拉取这个ID的语音。 Redis订阅后是阻塞的,KILL掉这个进程就取消了 你这是要做APP么?移动网络不稳定,网络波动连接断开订阅就取消

@屋檐不懂雨: 心跳检测的长连接,和消费者等待生产者消息的长连接,这肯定不是同一个连接呀;如果是同一个连接,那么处理消息耗时太长,那就不进行心跳检测了,你说这样合理吗?

============================================

你可以: 先把语音存储都某个地方,生成一个ID 然后利用Redis的订阅去分发这个ID 客户端接收到这个事件,去主动拉取这个ID的语音。 Redis订阅后是阻塞的,KILL掉这个进程就取消了 你这是要做APP么?移动网络不稳定,网络波动连接断开订阅就取消

@寻觅beyond: 那单独消费者等待生产者的消息会不会一直等着产生阻塞呢,不说心跳

============================================

你可以: 先把语音存储都某个地方,生成一个ID 然后利用Redis的订阅去分发这个ID 客户端接收到这个事件,去主动拉取这个ID的语音。 Redis订阅后是阻塞的,KILL掉这个进程就取消了 你这是要做APP么?移动网络不稳定,网络波动连接断开订阅就取消

@屋檐不懂雨: 你得有针对性的说是哪一中MQ,你可以这样问问题:Kafka的消费者在等待Broker发回消息时(轮询的过程),轮询线程是否会发生阻塞,有了这个比较明确的问题,你应该去搜一下官方文档,或者查询相关的书籍进行考证。

============================================

你可以: 先把语音存储都某个地方,生成一个ID 然后利用Redis的订阅去分发这个ID 客户端接收到这个事件,去主动拉取这个ID的语音。 Redis订阅后是阻塞的,KILL掉这个进程就取消了 你这是要做APP么?移动网络不稳定,网络波动连接断开订阅就取消

@寻觅beyond: 明白了,自己对这块的问题之前也比较模糊,现在明白怎么查询了.

subscribe是一个2113阻塞的方法,在取消订阅该频道前,会一5261直阻塞在这,4102只有当取消了订阅才会执行下面的1653other code,参考上面代码,我在onMessage里面收到消息后,调用了this.unsubscribe(); 来取消订阅,这样才会执行后面的other code!内容来自www.179s.com请勿采集。

本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。本文《redis和mq的发布订阅是tcp的长连接,消费者会阻塞吗》转载自cnblogs,版权归原作者所有,若侵权请联系:E-MAIL:513175919@qq.com
违法违规信息请立即联系本网可获得现金奖励,TEL:1-8-2-1-0-2-3-3-3-8-1(电话仅供违法违规信息举报,侵权类信息请EMAIL。)

www.179s.com false 互联网 http://www.179s.com/jsblogcnk/po/pokaka.html report 3571 1.redis和mq的发布订阅存在很大的区别,你还是详细了解一下吧,比如redis的发布订阅不会对发布的信息进行持久化;2.mq有很多种(Kafka、RabbitMQ、RocketMQ..),每种可能有自己的特性3.你说的长连接,是指的消费者拉取消息的长连接,还是消费者与服务器心跳的长连接?消费者什么情况下会阻塞呢?收获园豆:10============================================消费者与服务器心跳的长连接,消费者等待生产者的消息是不是就会阻塞

热门图片

经济金融企业管理法律法规社会民生科学教育降生活体育运动文化艺术电子数码电脑网络娱乐休闲行政地区心理分析医疗卫生