MQ引言

什么是MQ

MQ:message Queue翻译为消息队列,通过典型的生产者和消费者模型不断向消息队列中生产消息,消费者不断从队列中获取消息。因为消息的生产和消费都是一部的,而且只关心消息的发送和接收,没有业务逻辑的侵入,轻松的实现了 系统之间的解耦。别名是消息中间件,通过利用高效的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。

MQ有哪些种类

当今市场上有很多主流的消息中间件,如ActiveMQRabbitMQ,比较火的Kafka,阿里巴巴开发的RocketMQ等。

MQ 之间的对比

ActiveMQ ActiveMQ是Apache出品的,能力强劲的开源消息总线,它是一个完全支持JMS规范的消息中间件,丰富的API,多种集群架构模式让ActiveMQ在业界成为老牌的MQ。
Kafka Kafka是LinkedIn开源的分布式消息订阅系统,目前归属Apache顶级开源项目。Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是 用于日志的收集和传输,适合于大数据的互联网的数据收集业务。
RocketMQ RocketMQ是阿里巴巴开源的消息中间件,他是纯Java开发,具有高吞吐量,高可用,适合大规模分布式系统应用的特点,RocketMQ思路起源于Kafka,但并不是Kafka的复制,他对消息的可靠村塾以及事务做了优化,目前在阿里集团被广泛使用。

RabbitMQ RabbitMQ是使用Erlang语言开发的开源消息队列的系统,基于AMQP的主要特征是面向消息。队列,路由。可靠性。安全。AMQP协议更多用在企业系统内对数据的一致性、稳定性和可靠性要求很高的场景,对性能吞吐量的要求还在其次。

AMQP协议

AMQP协议(adviance queuing protocol)在2003年提出的,最早用于解决金融领域不同平台之间的消息传递问题,顾名思义AMQP是一种协议,更准确的说是一种链路协议,它不是对API层进行限定,而是直接定义网络交换的数据格式。这使得实现了AMQP的provider天然性就是跨平台的,以下是AMQP协议类型

官网: https://www.rabbitmq.com/ 官方教程: https://www.rabbitmq.com/#getstarted

在Centos7下安装RabbitMQ

因为RabbitMQ是由Erlang语言开发的所以需要安装Erlang的开发环境,再安装RabbitMQ

1、首先下载所需要的安装包

https://wws.lanzous.com/b01hipv8b 密码:4eqm

Centos7安装RabbitMQ详细教程_java


2、通过Xftp连接到Centos

Centos7安装RabbitMQ详细教程_centos_02


3、上传安装包到Centos

Centos7安装RabbitMQ详细教程_centos_03

4、安装Erlang、RabbitMQ
rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm

Centos7安装RabbitMQ详细教程_centos_04


yum install -y rabbitmq-server-3.7.18-1.el7.noarch.rpm

Centos7安装RabbitMQ详细教程_rabbitmq_05


默认安装完成后配置文件模板在:

/usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example

要复制一份到自己设置的路径下,这里是事先创建好的 /usr/local/rabbitmq

Centos7安装RabbitMQ详细教程_centos_06


cp /usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example /usr/local/rabbitmq/cd /usr/local/rabbitmq

mv rabbitmq.config.example rabbitmq.config5、修改配置文件

vim rabbitmq.config

Centos7安装RabbitMQ详细教程_java_07


然后保存退出

6、启动rabbitmq插件管理

rabbitmq-plugins enable rabbitmq_management

Centos7安装RabbitMQ详细教程_Erlang_08


7、启动RabbitMQ

systemctl start rabbitmq-server # 启动rabbitmq服务
systemctl restart rabbitmq-server # 重启服务
systemctl stop rabbitmq-server  # 停止服务
  • 1
  • 2
  • 3

Centos7安装RabbitMQ详细教程_java_09


8、是否启动成功

systemctl status rabbitmq-server 9、访问web管理界面

输入你的 ip:15672

进入如下界面

用户名是:guest

密码也是:guest

Centos7安装RabbitMQ详细教程_Erlang_10

然后就进入了首页

Centos7安装RabbitMQ详细教程_消息中间件_11

最后聊一下中间遇到的问题以及是如何解决的?

注意:
Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.

刚开始启动的时候出现了这个错误,当然没启动成功,然后输入
journalctl -xe查看日志信息如下:

Centos7安装RabbitMQ详细教程_rabbitmq_12

主要看error那句;解决方法,修改/etc/hosts文件加上 host后面的域名,设置对应的ip地址。

Centos7安装RabbitMQ详细教程_centos_13

然后再启动就没错了,如果日志显示的是
Error: This RabbitMQ version cannot run on Erlang 19.0.4 (erts 8.0.3): minimum required version is 19.3 (erts 8.3)那就代表是版本问题,表示Erlang和RabbitMQ版本不兼容去换版本吧!

Erlang与RabbitMQ版本对照表


备注:
如果登录时报了这个错:User can only log in via localhost,解决方法是执行以下三行代码: 1.rabbitmqctl add_user admin(用户名) 111111(密码) 2.rabbitmqctl set_permissions -p / admin “." ".” “.*” 3.rabbitmqctl set_user_tags admin administrator 执行完成以后,就用admin账号登陆就行


MQ引言

什么是MQ

MQ:message Queue翻译为消息队列,通过典型的生产者和消费者模型不断向消息队列中生产消息,消费者不断从队列中获取消息。因为消息的生产和消费都是一部的,而且只关心消息的发送和接收,没有业务逻辑的侵入,轻松的实现了 系统之间的解耦。别名是消息中间件,通过利用高效的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。

MQ有哪些种类

当今市场上有很多主流的消息中间件,如ActiveMQRabbitMQ,比较火的Kafka,阿里巴巴开发的RocketMQ等。

MQ 之间的对比

ActiveMQ ActiveMQ是Apache出品的,能力强劲的开源消息总线,它是一个完全支持JMS规范的消息中间件,丰富的API,多种集群架构模式让ActiveMQ在业界成为老牌的MQ。
Kafka Kafka是LinkedIn开源的分布式消息订阅系统,目前归属Apache顶级开源项目。Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是 用于日志的收集和传输,适合于大数据的互联网的数据收集业务。
RocketMQ RocketMQ是阿里巴巴开源的消息中间件,他是纯Java开发,具有高吞吐量,高可用,适合大规模分布式系统应用的特点,RocketMQ思路起源于Kafka,但并不是Kafka的复制,他对消息的可靠村塾以及事务做了优化,目前在阿里集团被广泛使用。

RabbitMQ RabbitMQ是使用Erlang语言开发的开源消息队列的系统,基于AMQP的主要特征是面向消息。队列,路由。可靠性。安全。AMQP协议更多用在企业系统内对数据的一致性、稳定性和可靠性要求很高的场景,对性能吞吐量的要求还在其次。

AMQP协议

AMQP协议(adviance queuing protocol)在2003年提出的,最早用于解决金融领域不同平台之间的消息传递问题,顾名思义AMQP是一种协议,更准确的说是一种链路协议,它不是对API层进行限定,而是直接定义网络交换的数据格式。这使得实现了AMQP的provider天然性就是跨平台的,以下是AMQP协议类型

官网: https://www.rabbitmq.com/ 官方教程: https://www.rabbitmq.com/#getstarted

在Centos7下安装RabbitMQ

因为RabbitMQ是由Erlang语言开发的所以需要安装Erlang的开发环境,再安装RabbitMQ

1、首先下载所需要的安装包

https://wws.lanzous.com/b01hipv8b 密码:4eqm

Centos7安装RabbitMQ详细教程_java


2、通过Xftp连接到Centos

Centos7安装RabbitMQ详细教程_centos_02


3、上传安装包到Centos

Centos7安装RabbitMQ详细教程_centos_03

4、安装Erlang、RabbitMQ
rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm

Centos7安装RabbitMQ详细教程_centos_04


yum install -y rabbitmq-server-3.7.18-1.el7.noarch.rpm

Centos7安装RabbitMQ详细教程_rabbitmq_05


默认安装完成后配置文件模板在:

/usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example

要复制一份到自己设置的路径下,这里是事先创建好的 /usr/local/rabbitmq

Centos7安装RabbitMQ详细教程_centos_06


cp /usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example /usr/local/rabbitmq/cd /usr/local/rabbitmq

mv rabbitmq.config.example rabbitmq.config5、修改配置文件

vim rabbitmq.config

Centos7安装RabbitMQ详细教程_java_07


然后保存退出

6、启动rabbitmq插件管理

rabbitmq-plugins enable rabbitmq_management

Centos7安装RabbitMQ详细教程_Erlang_08


7、启动RabbitMQ

systemctl start rabbitmq-server # 启动rabbitmq服务
systemctl restart rabbitmq-server # 重启服务
systemctl stop rabbitmq-server  # 停止服务
  • 1
  • 2
  • 3

Centos7安装RabbitMQ详细教程_java_09


8、是否启动成功

systemctl status rabbitmq-server 9、访问web管理界面

输入你的 ip:15672

进入如下界面

用户名是:guest

密码也是:guest

Centos7安装RabbitMQ详细教程_Erlang_10

然后就进入了首页

Centos7安装RabbitMQ详细教程_消息中间件_11

最后聊一下中间遇到的问题以及是如何解决的?

注意:
Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.

刚开始启动的时候出现了这个错误,当然没启动成功,然后输入
journalctl -xe查看日志信息如下:

Centos7安装RabbitMQ详细教程_rabbitmq_12

主要看error那句;解决方法,修改/etc/hosts文件加上 host后面的域名,设置对应的ip地址。

Centos7安装RabbitMQ详细教程_centos_13

然后再启动就没错了,如果日志显示的是
Error: This RabbitMQ version cannot run on Erlang 19.0.4 (erts 8.0.3): minimum required version is 19.3 (erts 8.3)那就代表是版本问题,表示Erlang和RabbitMQ版本不兼容去换版本吧!

Erlang与RabbitMQ版本对照表