RabbitMQ介绍

  • RabbitMQ是一个在AMQP基础上完成的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。
  • AMQP,即Advanced Message Queuing Protocol, 一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有 RabbitMQ等。
  • 主要特性:
    • 保证可靠性:使用一些机制来保证可靠性,如持久化、传输确认、发布确认
    • 灵活的路由功能
    • 可伸缩性:支持消息集群,多台RabbitMQ服务器可以组成一个集群
    • 高可用性:RabbitMQ集群中的某个节点出现问题时队列任然可用
    • 支持多种协议
    • 支持多语言客户端
    • 提供良好的管理界面
    • 提供跟踪机制:如果消息出现异常,可以通过跟踪机制分析异常原因
    • 提供插件机制:可通过插件进行多方面扩展

RabbitMQ安装及配置

基于 CentOS 安装 RabbitMQ 3.7
说明:推荐使用本地安装,减少网络依赖

1.安装前准备

2.安装erlang

  • 解压erlang安装包tar -xvf otp_src_20.1.tar.gz
  • 进入解压文件夹cd otp_src_20.1
  • 指定安装目录及安装配置(需要先安装并配置JDK)# erlang指定安装在/usr/local/erlang目录 ./configure –prefix=/usr/local/erlang –enable-smp-support –enable-threads –enable-sctp –enable-kernel-poll –enable-hipe –with-ssl –without-javac
  • 编译与安装make && make install
  • 配置erlang环境变量vi /etc/profile
    • 将 export PATH=$PATH:/usr/local/erlang/bin 添加到文件末尾
  • 重新加载profile文件source /etc/profile

3.安装RabbitMQ

  • 解压RabbitMQ安装包xz -d rabbitmq-server-generic-unix-3.7.0.tar.xz tar -xvf rabbitmq-server-generic-unix-3.7.0.tar
    • 由于下载的安装包为xz文件,先将xz解压为tar
    • 再解压缩tar文件
  • 启动RabbitMQcd rabbitmq_server-3.7.0/sbin ./rabbitmq-server -detached ps aux|grep rabbit #ps a 显示现行终端机下的所有程序,包括其他用户的程序。 #ps u   以用户为主的格式来显示程序状况。 #ps x   显示所有程序,不以终端机来区分。
    • 进入到解压的RabbitMQ的sbin目录
    • 启动
    • 查看进程

4.启动管理界面

  • 启动RabbitMQ的管理系统插件(需进入sbin目录)./rabbitmq-plugins enable rabbitmq_management

5.放行端口

如果没有网络指令需要先安装:yum install net-tools

  • 查看并放行端口netstat -tlnp firewall-cmd –add-port=15672/tcp –permanent firewall-cmd –add-port=5672/tcp –permanent
  • 也可以直接关闭防火墙
    • CentOS7#关闭防火墙 systemctl stop firewalld #开机禁用 systemctl disable firewalld #查看状态 systemctl status firewalld
    • CentOS6#1.永久性生效,重启后不会复原 #开启: chkconfig iptables on #关闭: chkconfig iptables off #2.即时生效,重启后复原 #开启: service iptables start #关闭: service iptables stop #3.查询TCP连接情况: netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ #4.查询端口占用情况: netstat -anp | grep portno(例如:netstat –apn | grep 80)
  • 云服务器需要在控制台添加“安全组设置”
    • 阿里云服务器
    • 华为云服务器