常见的Message Queue应用场景
在最近的工作的里面有同事问到我说,为什么我们需要一个Message Queue,Message Queue可以在哪些地方用,经过一些整理,大概能找到这些点,假如你有这方面的要求,也可以考虑使用Message Queue。
异步通信
很多时候,我们都不需要立即处理消息,或处理消息的时间过长,我们不希望用户一直等待。比如京东的优惠券的发放,你领取优惠券后,告诉你5~10分钟到账,就是这个道理。Message Queue就能帮你实现异步通信,你将消息放入队列,不立即处理他们,另外的服务再慢慢的从队列取数据,一个个的处理。
保证顺序
很多场景下,处理消息的顺序是很重要的,消息队列就能帮你做到这点。
缓冲
各种抢票耍猴网站,搞的手机抢购大赛,你可以将这些请求统统放入消息队列,然后再结合自己的耍猴天分,开发各种耍猴的政策,目的就是浪费抢购人的时间。要做这个,消息队列可以帮助你,就算是突然猛增的流量,也只是放入队列,并不立即处理,所以能减轻系统其他部分的压力。
成功保证
你要保证用户的某种操作能够成功。消费消息队列的时候,当成功了,给队列一个返回值,队列帮你把这条消息移出对列。如果没有成功,那你就不告诉队列已经成功,这个任务就一直在队列里面,等待下一次的处理。
同时这也算是一种弹性的设计,假如处理消息队列的服务崩溃了,更多的消息仍然可以进入队列,等处理消息的服务重启后,重新接着上次的任务走。
解耦系统
消息队列也能帮你解耦系统,你只需要发出消息,不用关心消息如何处理。另一方面,如果你是消息的接受方,也不需要知道消息从何而来,干你的事情就得了,于是系统之间相对比较独立。
暂时能想到这么多,目前知道的消息队列不少,像Apache ActiveMQ, MSMQ, RabbitMQ, OpenAMQ, ZeroMQ, DotNetMQ,各有不同,按需选择吧。
常见的Message Queue应用场景的更多相关文章
- 为什么要用Message Queue
摘录自博客:http://dataunion.org/9307.html?utm_source=tuicool&utm_medium=referral 为什么要用Message Queue 解 ...
- 消息队列(Message Queue)基本概念(转)
背景 之前做日志收集模块时,用到flume.另外也有的方案,集成kafaka来提升系统可扩展性,其中涉及到消息队列当时自己并不清楚为什么要使用消息队列.而在我自己提出的原始日志采集方案中不适用消息队列 ...
- Java分布式:消息队列(Message Queue)
Java分布式:消息队列(Message Queue) 引入消息队列 消息,是服务间通信的一种数据单位,消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.队列,是一种常见的数据结 ...
- Message Queue的使用目的
为什么要用Message Queue 摘录自博客:http://dataunion.org/9307.html?utm_source=tuicool&utm_medium=referral ...
- Top 10 Uses For A Message Queue
We’ve been working with, building, and evangelising message queues for the last year, and it’s no se ...
- 消息队列(Message Queue)基本概念
背景 之前做日志收集模块时,用到flume.另外也有的方案,集成kafaka来提升系统可扩展性,其中涉及到消息队列当时自己并不清楚为什么要使用消息队列.而在我自己提出的原始日志采集方案中不适用消息队列 ...
- 初识Message Queue之--基础篇
之前我在项目中要用到消息队列相关的技术时,一直让Redis兼职消息队列功能,一个偶然的机会接触到了MSMQ消息队列.秉着技术还是专业的好为原则,对MSMQ进行了学习,以下是我个人的学习笔记. 一.什么 ...
- MSMQ(Microsoft Message Queue)
http://www.cnblogs.com/sk-net/archive/2011/11/25/2232341.html 利用 MSMQ(Microsoft Message Queue),应用程序开 ...
- Message Queue vs. Web Services?
From stackoverflow.com When you use a web service you have a client and a server: If the server fail ...
随机推荐
- 一行code实现ADO.NET查询结果映射至实体对象。
AutoMapper是一个.NET的对象映射工具. 主要用途 领域对象与DTO之间的转换.数据库查询结果映射至实体对象. 这次我们说说 数据库查询结果映射至实体对象. 先贴一段代码: public S ...
- python库安装(numpy+scipy+matplotlib+scikit_learn)
python安装好后,库安装走了很多弯路,查了很多资料,终于安装成功,并且保存了该文章的地址,分享给大家 本人电脑windows 7,64位系统,安装的Python是3.5的,因此下载的库也是对应版本 ...
- JS模式--装饰者模式
在Javascript中动态的给对象添加职责的方式称作装饰者模式. 下面我们通常遇到的例子: var a = function () { alert(1); };//改成: var a = funct ...
- mui开发app之联网应用传输数据
手机的app分为,在线和单机,在线就是类似于C/S模式,能与服务器与他人共享数据的程序,单机就是在没有网络下可以玩转的app. 目前互联网盛行的时代,99%的程序都是联网环境下工作的.那么如何开发本地 ...
- PHP的学习记录
这是我的第一次写博客,是一个PHP的初学者,刚刚开始之前是一点儿的都不懂,现在开始通过买些书籍回来学习,废话少说,开始记录笔记吧. 函数:函数的英文名为function,也就是功能的意思,在自定义函数 ...
- String类理解
1.首先应该知道的是:String是一个类,不属于基本类型,而是引用类型. 2.创建String对象的三种方式的比较: 第一种是先去String pool检查是否存在"abc"常量 ...
- java web (j2ee)学习路线 —— 将青春交给命运
RESON TO DO JAVA WEB:1.JAVA WEB(企业级) 2.Android和iOS过于火爆并且不兼容 一.JAVA WEB开发需要的知识储备 1. 基本的网页设计语言:H ...
- JS第二弹:用Jquery组装html标签,输出到页面
用Ajax从服务端获取数据,遍历到表格中(其实将表格替换了),中间发现不能为新增的元素绑定事件,原来是没有将其作为JQ对象
- (window,parent,opener,top).location.reload方法汇总
今天在火狐浏览器上碰到个bug,调用parent.location.reload()时只刷新子页面,没有整个浏览器刷新,谷歌上没有问题,网上搜了一下 改成parent.location.reload( ...
- Mac OS 安装 Git 环境
1. 在mac的终端上,输入git会提示安装git软件,确认安装.安装完成后打开终端,使用git --version或者which git命令查看安装版本,有就是安装成功了. 2. 创建一个全局用户名 ...