messagequeue(messagequeue怎么读)

张工 2022-06-04 20:12:45 阅读:30
  

  在

概述

  之前,我们的系统使用JMS作为消息队列,领导突发奇想要用开源的东西,所以我们选择了著名的rabbitMQ(一种什么都不能打败领导的想法)。下面是对rabbitMQ的初步探讨。

背景

   RabbitMQ是erlang开发的AMQP(高级消息队列)的开源实现。AMQP的出现实际上满足了广大人民群众的需要。虽然在同步消息通信的世界里有很多开放的标准(比如COBAR的IIOP,或者SOAP等。),异步消息处理就不是这样了。只有大型企业才有一些商业实现(比如微软的MSMQ,IBM的Websphere MQ等。).因此,2006年6月,思科、Redhat、iMatix等。共同制定了AMQP的披露。

  RabbitMQ由RabbitMQ技术有限公司开发,并提供商业支持。该公司于2010年4月被SpringSource(VMWare的VMWare部门)收购。它于2013年5月被并入Pivotal。实际上,VMWare、Pivotal和EMC本质上是一个家族。不同的是,VMWare是独立的上市子公司,而Pivotal整合了EMC的部分资源,现在没有上市。

RabbitMQ的介绍

   详解RabbitMQ消息队列的概念、架构及使用场景

  从上面常用的消息中间件来看,Kafka比较好。Kafka是大数据时代诞生的消息中间件,但RabbitMQ是目前应用最广泛的一个。

  **Advanced Message Queuing Protocol (高级消息队列协议** The Advanced Message Queuing Protocol (AMQP):

  它是一个标准的、开放的应用层消息中间件协议。AMQP定义了通过网络发送的字节流的数据格式。所以兼容性很好。任何实现AMQP协议的程序都可以与其他兼容AMQP协议的程序进行交互,并且可以很容易地跨语言和跨平台。

  先介绍一个结构图,以便更好的理解RabbitMQ的基本原理。

详解RabbitMQ消息队列的概念、架构及使用场景

  通过上述应用组合的结构图,我们可以清楚地看到整个发送消息到接收消息的一个大致过程。

RabbitMQ使用场景

   RabbitMQ是一个消息中间件,消息中间件【最重要的功能:信息的缓冲】还是要从应用场景来看3360。

  1、系统集成与分布式系统的设计

  各种子系统通过消息连接,这种解决方案逐渐发展成一种架构风格,即“通过消息传递的架构”。

  比如现在医院有两个科室,医务部和住院部。在此之前,他们之间没有任何关系。如果在医务科看过病后挂号的信息和资料,到了住院部还要重新挂号?现在要改革了。看病后可以直接去住院部。如果两个系统需要连接呢?我们可以在这里使用我们的消息中间件。

  2、异步任务处理结果回调的设计

  比如日志记录,如果系统中所有的用户行为日志都需要记录,如果采用同步的方式进行日志记录必然会影响系统的响应速度。当我们将日志消息发送到消息队列时,日志子系统将以异步方式使用日志消息。不需要同步写入日志,NICE。

  3、并发请求的压力高可用性设计

  比如:比如电商的秒杀场景。当应用服务器或数据库服务器在某个时间点收到大量请求时,系统就会停机。如果请求能被转发到消息队列,然后被服务器消费,会使请求变得平滑,提高系统的可用性。

RabbitMQ和一般的消息传输模式:队列模式主题模式区别

  1、队列模式

详解RabbitMQ消息队列的概念、架构及使用场景

  一个发布者发布消息,下面的接收者按队列顺序接收,比如发布了10个消息,两个接收者A,B那就是A,B总共会收到10条消息,不重复。

   2、主题模式

详解RabbitMQ消息队列的概念、架构及使用场景

  对于Topic模式,一个发布者发布消息,有两个接收者A,B来订阅,那么发布了10条消息,A,B各收到10条消息。

  3、RabbitMQ的模式

详解RabbitMQ消息队列的概念、架构及使用场景

  生产者消息在生产后并不直接发送到队列,而是发送到一个交换空间:Exchange,它会根据交换的类型和路由键来决定发送到哪个队列。

  篇幅有限,rabbitMQ就说这么多了。如何搭建RabbitMQ环境后面会介绍。感兴趣的朋友可以关注一下!

详解RabbitMQ消息队列的概念、架构及使用场景

二维码