每一秒钟的时间都值得铭记

0%

消息队列RabbitMQ之初学者

消息队列

什么是消息队列

消息队列,即Message Queue(MQ)。消息队列是一种应用程序对应用程序的通信方法,应用程序通过读写出入队列的消息来进行通信,而无需专用连接来链接它们,消息传递是指程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信。
排队是指通过应用程序通过队列来通信,队列的使用除去了接收和发送应用程序同时执行的要求,其中RabbitMQ就是一款较为成熟的MQ产品。

生产者和消费者

消息队列是典型的生产者消费者模型,生产者不断向消息队列中生产消息,消费者不断地从队列中获取消息,因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。

AMQP和JMS

MQ是消息通信的模型,并不是具体的实现,现在实现MQ有两种主流方式:AMQP和JMS。

AMQP

AMQP,即Advanced Message Queuing Protocot,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受客户端中间件不同产品,不同开发语言等条件的限制,Erlang语言的实现有RabbitMQ等。

JMS

JMS,即Java Message Service,实际上是指JMS API。JMS由Sun公司早起提出的消息标准,旨在为Java应用程序提供统一的消息操作,包括create、send、receive等,JMS已经成为了Java EE的一部分,从使用角度来看,JMS和JDBC担任差不多的角色,用户都是根据相应的接口可以和实现了JMS的服务器进行通信,进行相关操作。

AMQP和JMS的区别

AMQP JMS
AMQP是通过规定协议来统一数据交互的格式 JMS是定义了统一的接口,来对消息操作进行统一
AMQP只是协议,不规定实现方式,因此是跨语言的 JMS限定了必须使用Java语言
AMQP的消息模型更加丰富 JMS规定了两种常见的消息模型

常见的MQ产品

  • ActiveMQ:基于JMS。
  • RabbitMQ:基于AMQP协议,erlang语言开发,稳定性好。
  • RocketMQ:基于JMS,阿里巴巴产品,目前交由Apache基金会管理。
  • Kafka:分布式消息系统,高吞吐量。

RabbitMQ

RabbitMQ是一款基于AMQP的消息队列产品。

  • RabbitMQ是一个开源的,在AMQP基础上完整的,可复用的企业消息系统。
  • 支持主流的操作系统,Linux、Windows、MacOX等。
  • 多种开发语言支持,Java、Python、Ruby、.NET、PHP、C/C++、node.js等等。

Erlang语言

Erlang是一种面向并发的编程语言,RabbitMQ就是基于Erlang语言而进行编写的,所以如果想要安装RabbitMQ,那么就需要先按照Erlang语言的环境。

Erlang环境安装

Erlang语言Windows版安装包:

http://www.erlang.org/download/otp_win64_17.3.exe

Linux环境在线安装:

1
2
yum install esl-erlang_17.3-1~centos~6_amd64.rpm
yum install esl-erlang-compat-R14B-1.el6.noarch.rpm

RabbitMQ下载

官网: http://www.rabbitmq.com/

在这里插入图片描述

官方教程:http://www.rabbitmq.com/getstarted.html

在这里插入图片描述

坚持原创技术分享,您的支持将鼓励我继续创作!
-------------这是我的底线^_^-------------