首先需要介绍一下rabbitMq。
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。——[百度百科]
RabbitMQ是由Erlang语言编写的实现了高级消息队列协议(AMQP)的开源消息代理软件(也可称为 面向消息的中间件)。支持Windows、Linux/Unix、MAC OS X操作系统和包括JAVA在内的多种编程语言。
AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。
rabbitMQ的java驱动官方文档地址
版本5.3.0:https://rabbitmq.github.io/rabbitmq-java-client/api/current/overview-summary.html
版本4.7.0:https://rabbitmq.github.io/rabbitmq-java-client/api/4.x.x/overview-summary.html
spring AMQP 官方文档地址
版本1.7.3:https://docs.spring.io/spring-amqp/docs/1.7.3.BUILD-SNAPSHOT/api/
用 [TOC]
来生成目录:
名称 | 简单说明 |
---|---|
异步处理 | 应用之间的异步处理问题 |
应用解耦 | 应用之间的解耦问题 |
流量削峰 | 对应用的流量进行削峰,如秒杀场景 |
日志处理 | 应用之间的日志收集,假设程序里面每个类,每个方法都要定义日志记录,单单说效率就不好 |
Rabblit官网地址:http://www.rabbitmq.com/
根据操作系统的不同,选择不同的版本
此处使用CentOS6x版本操作系统安装
注意:由于RabbitMQ是使用Erlang语言编写的,我们还必须安装Erlang
跑到Erlang下载环境(网页往下拖有Erlang的官方安装方式,此方式不需要下载)
地址:https://www.erlang-solutions.com/resources/download.html
注意事项:第一步骤/etc/yum.repos.d/里面的erlang-solutions是需要替换成Erlang官方安装下的配置,否则安装RabbitMQ的时候回报Erlang版本需要大于等于19.3的错误,报错在下面有分析
Erlang官方安装过程如下:
//下载安装包
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
//
rpm --import https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
//在/etc/yum.repos.d/目录下新建一个文件rabbitmq-erlang.repo,然后将下面的粘帖进去
[erlang-solutions]
name=CentOS $releasever - $basearch - Erlang Solutions
baseurl=https://packages.erlang-solutions.com/rpm/centos/$releasever/$basearch
gpgcheck=1
gpgkey=https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
enabled=1
//执行安装
sudo yum install erlang
//执行安装esl
sudo yum install esl-erlang
安装成功后图片:
输入erl即可进入Erlang
切换到上传rabbitMQ的安装包路径下,执行:
rpm -ivh rabbitmq-server-3.7.7-1.el6.noarch.rpm
安装完毕,查看RabbMQ状态:service rabbitmq-server status
默认RabbitMQ拥有如下端口号:
端口号 | 简单说明 |
---|---|
15672 | WEB管理界面 |
5672,5671 | 由AMQP 0-9-1和1.0客户端使用,没有和使用TLS |
4369 | epmd,RabbitMQ节点和CLI工具使用的对等发现服务 |
25672 | 用于节点间和CLI工具通信(Erlang分发服务器端口)并从动态范围分配(默认情况下限于单个端口,计算为AMQP端口+ 20000) |
35672-35682 | CLI工具(Erlang分发客户端端口)用于与节点通信,并从动态范围(计算为服务器分发端口+ 10000到服务器分发端口+ 10010)进行分配。 |
61613, 61614 | 没有和使用TLS的STOMP客户端(仅当启用了STOMP插件时) |
1883, 8883 | 如果启用了MQTT插件,则没有和使用TLS的MQTT客户端 |
15674 | STOMP-over-WebSockets客户端(仅当启用了Web STOMP插件时) |
15675 | MQTT-over-WebSockets客户端(仅当启用了Web MQTT插件时) |
一般常用就15672和5672
防火墙进行放出端口。
外部访问192.168.153.128:15672/#/users,如下图:
但是此时是登录不了的,默认guest只能localhost访问
添加RabbitMQ用户:sudo rabbitmqctl add_user root 123456
帐号:root 密码123456
赋予RabbitMQ用户角色:sudo rabbitmqctl set_user_tags root administrator
赋予用户默认vhost的全部操作权限:sudo rabbitmqctl set_permissions -p / root “.” “.” “.*”
查看用户的权限:sudo rabbitmqctl list_user_permissions username
查看全部用户:sudo rabbitmqctl list_users
此操作删除guest用户,我们自己创建新的用户来使用
删除用户:sudo rabbitmqctl delete_user guest
service rabbitmq-server restart
重启后我们再访问:http://192.168.153.128:15672/#/users进行登录
至此,安装结束。。。。
地址:https://www.rabbitmq.com/rabbitmqctl.8.html
执行安装rabbitMQ的时候报错
此处为2个问题,第一个问题是Erlang版本需要大于等于19.3版本,第二个问题为没有socat依赖
第一个问题。笔者安装的Erlang为21.0版本,明明是大于19.3版本的。但是却报错了。
使用:yum list | grep erlang再次确认一下查看一下
确定版本为21.0,但是却报错。回想了一下,笔者在按照Erlang官方安装的时候,添加了一些东西
原本/etc/yum.repos.d/里面的erlang-solutions,只是添加了官方的给出的代码。并不是替换里面的内容
顺便百度了一下这个问题:https://www.jianshu.com/p/f54dc259a9ed
索性卸载Erlang替换内容再次安装。。
执行yum remove esl-erlang.x86_64进行erlang卸载
解决方案:在/etc/yum.repos.d/目录下新建一个文件rabbitmq-erlang.repo,然后将repo库代码(上面有)粘帖进去
再次执行安装
sudo yum install erlang
果然,再次重新安装Erlang之后,就可以执行安装RabbitMQ了
再解决第二个问题,解决方法安装centos的epel的扩展源
yum -y install epel-release
之后执行yum -y install socat