消息队列的消费者是谁来承担?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消息队列的消费者是谁来承担?相关的知识,希望对你有一定的参考价值。
一般消息队列包含3个部分,生产者,队列,消费者。
假如我用django(web框架)写后台,那么可以说,django就是生产者,
队列可以用rabbitMQ或者redis,
我好奇消费者是谁来承担?
是我自己写一个脚本程序作为消费者吗?(我看教程上面是这么干的)
还是说有什么现成的框架可以作为消费者?(比如说mysql啥的,当然这里肯定不是mysql,)
以上的提问可能不专业,或者有毛病,大致是这个意思,因为我也处在学习中,希望各位前辈不吝赐教
生产者是前端。比如用户需要登录,那么前端就发送一个登录的需求给消息队列,web后台作为消费者,满足用户的登录需求。 参考技术A 消费者的含义是读取你的数据的使用者,如果你使用web写后台,那么操作员执行录入操作,这些功能都可以理解为生产者,如果用户看到后做了某些操作,使用了这条记录,那么你认为用户就是数据的消费者。
缓冲队列包含生产者和消费者,生产者是将源数据录入你的消息队列中达到消峰限流等目的,消费者是指客户端程序将消息队列中的数据拿出来,进行部分处理从而给用户呈现的部分,可以这么理解。 参考技术B 是的,需要你自己手写一个消费者的,因为MQ队列是有名称的,如果是框架怎么知道你生产者是什么名称怎么去消费呢?本回答被提问者采纳
redis与rabbitmq做消息队列的区别
参考技术A 消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。redis
RabbitMQ
可靠性
rabbitmq:具有消息消费确认机制,如果发布一条消息,还没有消费者消费该队列,那么这条消息将一直存放在队列中,直到有消费者消费了该条消息,以此可以保证消息的可靠消费,那么rabbitmq的消息是如何存储的呢?(后续更新);
实时性
redis:实时性高,redis作为高效的缓存服务器,所有数据都存在内存中,所以它具有更高的实时性
消费者负载均衡:
rabbitmq队列可以被多个消费者同时监控消费,但是每一条消息只能被消费一次,由于rabbitmq的消费确认机制,因此它能够根据消费者的消费能力而调整它的负载;
持久性
redis:redis的持久化是针对于整个redis缓存的内容,它有RDB和AOF两种持久化方式(redis持久化方式,后续更新),可以将整个redis实例持久化到磁盘,以此来做数据备份,防止异常情况下导致数据丢失。
rabbitmq:队列,每条消息都可以选择性持久化,持久化粒度更小,更灵活;
队列监控
rabbitmq实现了后台监控平台,可以在该平台上看到所有创建的队列的详细情况,良好的后台管理平台可以方面我们更好的使用;
redis没有所谓的监控平台。
总结
redis:轻量级,低延迟,高并发,低可靠性;
rabbitmq:重量级,高可靠,异步,不保证实时;
以上是关于消息队列的消费者是谁来承担?的主要内容,如果未能解决你的问题,请参考以下文章