RabbitMQ消息队列

引言:

消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

MQ全称为Message Queue,消息队列作用在(一个)应用程序和(一个或多个)应用程序之间进行通信过程中保存消息的容器。【是在消息的传输过程中保存消息的容器 】

MQ的常见应用场景

1.应用解耦
2.异步处理
3.流量削峰

AMQP 和 JMS

区别:
– AMQP:底层通信协议
– JMS:java message service(java消息服务) 让程序员操作mq(通信)的api(接口)

  • AMQP高级消息队列协议,是一个进程间传递异步消息的网络协议,更准确的说是一种binary wire-level protocol(链接协议)。这是其和JMS的本质差别,AMQP不从API层进行限定,而是直接定义网络交换的数据格式。
  • JMS即Java消息服务(JavaMessage Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM:所有的mq的产品,消息中间件)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
– JMS和AMQP区别
  • JMS是定义了统一的接口,来对消息操作进行统一;AMQP是通过规定协议来统一数据交互的格式
  • JMS限定了必须使用Java语言;AMQP只是协议,不规定实现方式,因此是跨语言的。
  • JMS规定了两种消息模式(P2P点对点、P/S发布与订阅 Redis—小公司秒杀—可以模拟队列。);而AMQP的消息模式更加丰富
RabbitMQ

RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。

RabbitMQ官方地址:http://www.rabbitmq.com

RabbitMQ提供了6种模式:简单模式,work模式,Publish/Subscribe发布与订阅模式,Routing路由模式,Topics主题模式,RPC远程调用模式(远程调用,不太算MQ;不作介绍);

官网对应模式介绍:https://www.rabbitmq.com/getstarted.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注