RabbitMQ安装及使用

  • 下载

由于RabbitMQ是基于Erlang语言开发,所以在安装RabbitMQ之前,需要先安装Erlang。好在RabbitMQ官网已经为我们提供了Erlang的安装包

Erlang下载地址:http://www.rabbitmq.com/releases/erlang/

本人使用的操作系统为:CentOS7

下载的Erlang安装包为:erlang-19.0.4-1.el7.centos.x86_64.rpm

RabbitMQ下载地址:https://www.rabbitmq.com/download.html

下载的RabbitMQ安装包为:rabbitmq-server-3.6.8-1.el7.noarch.rpm

  • 安装

将下载的两个文件上传到/usr/local目录,先安装Erlang

yum install erlang-19.0.4-1.el7.centos.x86_64.rpm

测试Erlang是否安装成功

erl -version

出现以下信息则表示安装成功:Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 8.0.3

安装RabbitMQ

yum install rabbitmq-server-3.6.8-1.el7.noarch.rpm

运行RabbitMQ

cd /usr/sbin
./rabbitmq-server start

出现以下信息,则表示启动成功:



RabbitMQ 3.6.8. Copyright (C) 2007-2016 Pivotal Software, Inc.
## ## Licensed under the MPL. See http://www.rabbitmq.com/
## ##
########## Logs: /var/log/rabbitmq/[email protected]
###### ## /var/log/rabbitmq/[email protected]
##########
Starting broker...
completed with 0 plugins.



后台启动可使用:

./rabbitmq-server -detached

停止服务可使用:

./rabbitmqctl stop
  • 插件安装

查看目前RabbitMQ已安装的插件

cd /usr/sbin
./rabbitmq-plugins list
  • 安装web管理端

./rabbitmq-plugins enable rabbitmq_management

安装成功后,启动MQ

通过浏览器访问地址:http://192.168.120.129:15672/#/

由于guest用户被限制,只能通过localhost访问,因此我们需要新建一个用户,并授予管理员权限。

新建一个用户名为admin,密码为admin的用户,并授予管理员(administrator)权限

./rabbitmqctl add_user admin admin
./rabbitmqctl set_user_tags admin administrator
  • 安装mqtt

./rabbitmq-plugins enable rabbitmq_mqtt
  • 安装websocket

./rabbitmq-plugins enable rabbitmq_web_stomp
./rabbitmq-plugins enable rabbitmq_web_stomp_examples
  • 配置

如果需要修改RabbitMQ的默认配置,先查找配置文件样例位置

find / -name "rabbitmq.config.example"

然后将样例配置复制到制定目录

cp /usr/share/doc/rabbitmq-server-3.6.8/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

修改样例文件,并保存,重启MQ生效。

  • 权限

主要是set_permissions的使用,先看下命令的格式:

set_permissions [-p vhost] {user} {conf} {write} {read}

首先需要注意以下几点的理解:

1.这里的权限,只是针对一般用户的访问权限,注意和角色的区分。举个例子来说,非管理用户(普通用户),角色设置为none,然后在这里配置conf、write、read的权限。

2.conf、write、read采用正则表达式,之前在很多的网络文章中都提到过,但到底是针对什么做正则,网络中的文章提到的很少,我自己实践琢磨出,这里的正则主要是针对exchange和queue。正在表达式可以省略^和$,主要2种特殊的表达式,”:表示完全不匹配(即没有权限)’.*’ :表示匹配所有(即所有权限)


  • 集群模式

RabbitMQ集群模式分为两种:普通模式,镜像模式(HA)

  普通模式:默认的集群模式

对于Queue来说,消息实体只存在于其中一个节点,A、B两个节点仅有相同的元数据,即队列结构。

当消息进入A节点的Queue中后,consumer从B节点拉取时,RabbitMQ会临时在A、B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。

所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连A或B,出口总在A,会产生瓶颈。

该模式存在一个问题就是当A节点故障后,B节点无法取到A节点中还未消费的消息实体。

如果做了消息持久化,那么得等A节点恢复,然后才可被消费;如果没有持久化的话,然后就没有然后了……

  镜像模式:把需要的队列做成镜像队列,存在于多个节点,属于RabbitMQ的HA方案

该模式解决了上述问题,其实质和普通模式不同之处在于,消息实体会主动在镜像节点间同步,而不是在consumer取数据时临时拉取。

该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉。

所以在对可靠性要求较高的场合中适用。

  • 服务器信息:

 我们准备了两台服务器,系统为Centos7,对应的ip跟hostname分别为

192.168.1.242    mq01
192.168.1.243    mq02

 在安装好的两台节点服务器中,分别修改/etc/hosts文件,指定mq01,mq02的hosts,如:

192.168.1.242    mq01
192.168.1.243    mq02

 注意:hostname文件也要正确,分别是mq01、mq02,如果修改hostname建议在安装rabbitmq前修改。

  • 设置 Erlang Cookie:

Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信。

查看文件权限的命令为:

ls -l /var/lib/rabbitmq/.erlang.cookie

这里将 mq01的 /var/lib/rabbitmq/.erlang.cookie文件复制到 mq02,由于这个文件权限是 400,所以需要先修改该文件权限为 777:

chmod 777 /var/lib/rabbitmq/.erlang.cookie

使用scp或其他方式将该文件复制到mq02服务器的相同目录,并覆盖。

然后将mq01的 /var/lib/rabbitmq/.erlang.cookie文件权限修改回来

chmod 400 /var/lib/rabbitmq/.erlang.cookie
  • 组成集群

重启RabbitMQ服务:

rabbitmqctl stop
rabbitmq-server -detached

将mq02与mq01组成集群:

./rabbitmqctl stop_app
./rabbitmqctl join_cluster [email protected]./rabbitmqctl stop./rabbitmq-server -detached

如果要使用内存节点,则可以使用--ram:

rabbitmqctl join_cluster --ram [email protected]

查看集群是否配置成功:

rabbitmqctl cluster_status
  • HA集群模式配置

 上面配置RabbitMQ默认集群模式,但并不保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制,虽然该模式解决一部分节点压力,但队列节点宕机直接导致该队列无法使用,只能等待重启,所以要想在队列节点宕机或故障也能正常使用,就要复制队列内容到集群里的每个节点,需要创建镜像队列。

  • 设置镜像队列策略

在任意一个节点上执行:

rabbitmqctl set_policy ha-all "^" ‘{"ha-mode":"all"}‘

将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一直。

如果要为制定的vhost创建策略则使用-p:

rabbitmqctl set_policy -p hrsystem ha-allqueue"^" ‘{"ha-mode":"all"}‘
这行命令在vhost名称为hrsystem创建了一个策略,策略名称为ha-allqueue,策略模式为 all 即复制到所有节点,包含新增节点,
策略正则表达式为 “^” 表示所有匹配所有队列名称。
例如rabbitmqctl set_policy -p hrsystem ha-allqueue "^message" ‘{"ha-mode":"all"}‘

注意:"^message" 这个规则要根据自己修改,这个是指同步"message"开头的队列名称,我们配置时使用的应用于所有队列,所以表达式为"^"

  • 安装并配置 HAProxy

在 服务器上安装 HAProxy,然后修改
/etc/haproxy/haproxy.cfg:

listen rabbitmq_cluster 0.0.0.0:5672

mode tcp
balance roundrobin

server   node1 192.168.1.242:5672 check inter 2000 rise 2 fall 3
server   node2 192.168.1.243:5672 check inter 2000 rise 2 fall 3
时间: 2024-10-13 00:27:16

RabbitMQ安装及使用的相关文章

server 2008r2 rabbitmq 安装web管理

在server 20008 r2 安装完之后打开 localhost:15672 显示无法找到网页 因为默认web管理没有启用 需要启用下,启用过程 1:打开rabbbitrq命令 (开始菜单rabbitmq文件夹下) 2:依次输入 (1)rabbitmq-plugins enable rabbitmq_management (2)rabbitmq-service stop (3)rabbitmq-service install (4)rabbitmq-service start 然后在打开就可

centos 7下rabbitmq安装

安装erlang环境 添加rabbitmq依赖的erlang yum命令repos # In /etc/yum.repos.d/rabbitmq-erlang.repo [rabbitmq-erlang] name=rabbitmq-erlang baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7 gpgcheck=1 gpgkey=https://www.rabbitmq.com/rabbitmq-release-signing

RabbitMQ 安装与使用

RabbitMQ 安装与使用 前言 吃多了拉就是队列,吃饱了吐就是栈 使用场景 对操作的实时性要求不高,而需要执行的任务极为耗时:(发送短信,邮件提醒,更新文章阅读计数,记录用户操作日志) 存在异构系统间的整合: 安装 下载 Erlang 安装完确定ERLANG_HOME环境变量是否添加,否则:Setx ERLANG_HOME "D:\Program Files\erl8.2″ 下载安装包 安装完通过rabbitmqctl status确定rabbitmq状态 管理服务 默认安装成功会自动启动服

RabbitMQ安装和配置

RabbitMQ: MQ:message queue.MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术.排队指的是应用程序通过 队列来通信.队列的使用除去了接收和发送应用程序同时执行的要求.其中较为成熟的MQ产品有IBM WEBSPHERE MQ

rabbitmq安装Management Plugin

运行和安装Rabbitmq Management的步骤如下: 1.进入Rabbitmq安装目录,运行rabbitmq-plugins enable rabbitmq_management 2.运行rabbitmqctl stop 3.打开浏览器访问:http://localhost:15672/#/

RabbitMQ安装配置

安装RabbitMQ windows下的安装是非常简单的,我们需要准备两个东西 erlang的环境  下载windows和与之对象的操作系统位数安装包 http://www.erlang.org/downloads RabbitMQ http://www.rabbitmq.com/download.html 下载完毕之后,先安装 erlang再安装 RabbitMQ 安装这后我们可以配置一下rabbitmq的环境变量 打开命令行运行rabbitmq-server 现在大功已经告成了,不过rabb

MQ(1)-RabbitMq安装

本人安装的rabbitmq环境相关文件,可在本人提供的百度云盘资源进行下载. 链接:https://pan.baidu.com/s/1bnofK3l 密码:whdm 一 前言 消息队列又称为MQ,应用程序间的消息通信工具,其有利于程序解耦.多语言集成.异步通信.扩展和简单负载均衡等,是生产-消费者模型的典型代表.常见MQ产品有RabbitMQ ZeroMQ Kafka等等. RabbitMQ,老牌MQ产品,基于erlang语言,实现对AMQP等协议的支持,重量级,适合企业级应用开发: Kafka

ActiveMQ与RabbitMQ安装以及实现

ActiveMQ 1.下载ActiveMQ 去官方网站下载:http://activemq.apache.org/ 2.运行ActiveMQ 解压缩apache-activemq-5.11.1-bin.zip,然后双击apache-activemq-5.11.1\bin\activemq.bat运行ActiveMQ程序. 启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queue,命名为FirstQueue. 3.创建Eclipse项目并运行 创

RabbitMQ安装笔记

RabbitMQ安装笔记 安装Erlang 在安装RabbitMQ之前,需要先安装Erlang.可以通过以下命令安装: yum install erlang 安装时信息如下: 安装RabbitMQ 服务端 安装命令如下: wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.2/rabbitmq-server-3.4.2-1.noarch.rpm rpm -Uvh rabbitmq_server-3.4.2-1.noarch.rpm

AMQP之RabbitMQ安装与配置

刚开始接触RabbitMQ,今天尝试安装,具体流程如下,参照了一些网上同行的经验,环境如下图: rabbitmq版本:3.1.5 下载地址:http://www.rabbitmq.com/releases/rabbitmq-server/v3.1.5/rabbitmq-server-3.1.5.tar.gz 文件下载目录:/home/gao/server以下简称为当前目录 准备工作:安装依赖环境 yum install build-essential openssl openssl-devel