梳理消息队列 MQJMSKafka.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
梳理消息队列 MQ/JMS/Kafka 首先举个收快递的栗子,传统的收快递,快递小哥把我们的快递送到我们的手里。他需要什么条件嗯? 快递小哥有时间送, 我们有时间取, 快递小哥和我们商定一个时间地点。 但是嗯。快递小哥有那么多的快递需要送,可能送我快递的时候,我不在家,可能我在家的时候,快递小哥送其他的地方的快递。所以嗯,这个时候,要么就是坐在家里等快递,要么就只能从新约个时间点在送。那怎样办去避开这个情况嗯? 于是嗯快递柜消灭了。快递小哥不用关怀我什么时候在家,由于快递小哥有时间了,就把快递放快递柜,而我有时间了,我就去快递柜取我的快递。 那么快递柜所起到的作用就是我们今日要收的消息队列。我们可以把消息队列比作是一个存放快递的的快递柜,当我们需要猎取我们快递的时候就可以从快递柜里面拿到属于我们的快递。 1.1什么是消息队列 我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供本人使用。我们看看维基百科上的描述:在计算机科学中,消息队列(Message queue)是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户。 是不是很难理解,我们换个说法来理解 我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供本人使用。 1.2消息队列(Message queue)有什么用? 消息队列是分布式系统中重要的组件,使用消息队列次要是为了通过异步处理提高系统功能和削峰、降低系统耦合性。 通过异步处理提高系统功能(削峰、削减响应所需时间) 举个例子:我们在某个网站进行注册账号,我们需要做如下四件事: 填写我们的注册信息; 提交我们的注册信息; 我们的邮箱收到注册信息; 我们的短信收到注册信息。 假如接受同步串行,所需要的时间是:a+b+c+d 假如接受同步并行,所需要的时间是:a+b+max(c,d) 假如接受消息队列,所需要的时间是:a+b+消息队列 降低系统耦合性 举个例子,A公司做了某个系统,B公司觉得A公司的某个功能很好,于是B公司和A公司的系统进行了集成。这时C公司也觉得A公司的这个功能很好,于是,C公司也和A公司的系统进行了集成。以后还有D公司…。 介于这种情况,A公司的系统和其他公司的耦合度都很高,每集成一个公司的系统,A公司都需要修改本人的系统。假如接受消息队列,则变成了如下: 不管以后还有多少公司的应用程序想要用A公司的程序,都不需要和A公司进行集成,谁需要这个功能,谁就去消息队列里面猎取。 1.3消息队列的两种模式 点对点模式 应用程序由:消息队列,发送方,接收方组成。 每个消息都被发送到一个特定的队列,接收者从队列中猎取消息。队列保留着消息,直到他们被消费或超时。 发布订阅模式 应用程序又由:角色主题(Topic)、发布者(Publisher)、订阅者(Subscriber)构成。 发布者发布一个消息,该消息通过topic传递给全部的客户端。该模式下,发布者与订阅者都是匿名的,即发布者与订阅者都不晓得对方是谁。并且可以动态的发布与订阅Topic。Topic次要用于保存和传递消息,且会一直保存消息直到消息被传递给客户端。 引见完了消息队列,接着我们引见JMS 2JMS引见 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面对消息两头件(MOM)的API,类似于JDBC。用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。它供应创建、发送、接收、读取消息的服务。由Sun公司和它的合作伙伴设计的应用程序接口和相应语法,使得Java程序能够和其他消息组件进行通信。 JMS是一个消息服务的标准或者说是规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务愈加牢靠以及异步性。 引见到这里,应当明白了消息队列和JMS的区分了吧? 消息队列:计算机科学中,A和B进行通信的一种方式。 JMS:java平台之间分布式通信的一种标准或者规范。 换句话说,JMS就是java对于消息队列的一种实现方式。 2.1JSM消息模型 点对点,发布订阅,消息队列中已经说的很清楚了,这里就不反复说了。 2.2JMS消费 同步(Synchronous) 订阅者/接收方通过调用 receive()来接收消息。在receive()方法中,线程会堵塞直到消息到达或者到指定时间后消息仍未到达。 异步(Asynchronous) 消息订阅者需注册一个消息监听者,类似于大事监听器,只需消息到达,JMS服务供应者会通过调用监听器的onMessage()递送消息。 2.3JMS编程模型 JMS编程模型格外类似于JDBC。回忆一下,我们之前讲到的MyBat

文档评论(0)

duanbingbing + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档