1.rabbitmq的安装

1 RabbiMQ简介

RabbiMQ是用Erang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡。

2 RabbiMQ模式

2.1 单一模式

2.2 普通模式

默认的集群模式。
对于普通模式,集群中各节点有相同的队列结构,但消息只会存在于集群中的一个节点。对于消费者来说,若消息进入A节点的Queue中,当从B节点拉取时,RabbitMQ会将消息从A中取出,并经过B发送给消费者。
应用场景:该模式各适合于消息无需持久化的场合,如日志队列。当队列非持久化,且创建该队列的节点宕机,客户端才可以重连集群其他节点,并重新创建队列。若为持久化,只能等故障节点恢复。

2.3 镜像模式

要实现镜像模式,需要先搭建一个普通集群模式,在这个模式的基础上再配置镜像模式以实现高可用。
与普通模式不同之处是消息实体会主动在镜像节点间同步,而不是在取数据时临时拉取,高可用;该模式下,mirror queue有一套选举算法,即1个master、n个slaver,生产者、消费者的请求都会转至master。
应用场景:可靠性要求较高场合,如下单、库存队列。
缺点:若镜像队列过多,且消息体量大,集群内部网络带宽将会被此种同步通讯所消耗。

3 RabbitMQ版本

RabbitMQ通过ErLang(air-lang)开发,故需先安装ErLang。

3.1 ErLang版本

版本:21.2
下载链接:https://packagecloud.io/rabbitmq/erlang/packages/el/6/erlang-21.2.2-1.el6.x86_64.rpm/download.rpm

3.2 RabbitMQ版本

版本:3.7.10
下载链接:https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.10/rabbitmq-server-3.7.10-1.el7.noarch.rpm

4.安装步骤

4.1ErLang安装

在/usr/local目录下创建文件加erlang,把下载好的erlang安装包上传到erlang文件夹下。
使用命令安装erlang:rpm –ivh erlang-21.2.2-1.el6.x86_64.rpm

4.2RabbitMQ安装

4.2.1 安装RabbitMQ

在/usr/local目录下创建文件加rabbitmq,把下载好的RabbitMQ安装包上传到rabbitmq文件夹下。
使用命令安装RabbitMQ:rpm –ivh rabbitmq-server-3.7.10-1.el7.noarch.rpm
此时如果报错,如图
rabbitmq的安装与命令行管理工具rabbitmqadmin的使用

4.2.2 socat安装

提示socat被rabbitmq-server依赖,故需要先安装socat
socat下载链接:https://centos.pkgs.org/7/repoforge-x86_64/socat-1.7.2.4-1.el7.rf.x86_64.rpm.html
在/usr/local目录下创建文件加socat,把下载好的socat安装包上传到socat文件夹下。
使用命令安装socat:rpm –ivh socat-1.7.2.4-1.el7.rf.x86_64.rpm
此时再使用上述命令安装RabbitMQ。

4.2.3 配置hosts文件

更改三台MQ节点的计算机名分别为rabbitmq1、rabbitmq2和rabbitmq3,然后修改hosts配置文件
命令:vim /etc/hostname
rabbitmq1
命令:vi /etc/hosts
ip1 rabbitmq1
ip2 rabbitmq2
ip3 rabbitmq3

4.2.4 .erlang.cookie

Rabbitmq的集群是依附于erlang的集群来工作的,所以必须先构建起erlang的集群景象。Erlang的集群中各节点是经由过程一个magic cookie来实现的,这个cookie存放在/var/lib/rabbitmq/.erlang.cookie中,文件是400的权限。所以必须保证各节点cookie一致,不然节点之间就无法通信。
命令:cat /var/lib/rabbitmq/.erlang.cookie
我的mygic cookie : EOAPJWYDKHNVFEKOMOHJ

4.2.5 添加管理服务,启动rabbitmq服务

添加管理服务命令:rabbitmq-plugins enable rabbitmq_management
启动命令:rabbitmq-server –detached或service rabbitmq-server start

4.2.6 将rabbitmq2、rabbitmq3作为内存节点加入rabbitmq1节点集群中

rabbitmqctl stop_app //停掉rabbit应用

rabbitmqctl join_cluster [email protected] //加入到磁盘节点

rabbitmqctl start_app //启动rabbit应用

4.2.7 查看集群状态

命令:rabbitmqctl cluster_status

4.2.8 新增用户

rabbitmqctl add_user admin [email protected]
rabbitmqctl set_user_tags admin administrator

4.2.9 admin用户授权

rabbitmq的安装与命令行管理工具rabbitmqadmin的使用
rabbitmq的安装与命令行管理工具rabbitmqadmin的使用

4.2.10 创建RabbitMQ策略(创建镜像模式)

上面已经完成RabbitMQ默认集群模式,但并不保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制。虽然该模式解决一项目组节点压力,但队列节点宕机直接导致该队列无法应用,只能等待重启,所以要想在队列节点宕机或故障也能正常应用,就要复制队列内容到集群里的每个节点,必须要创建镜像队列。
镜像队列是基于普通的集群模式的,然后再添加一些策略,所以得先配置普通集群,然后才能设置镜像队列,我们就以上面的集群接着做。

rabbitmq的安装与命令行管理工具rabbitmqadmin的使用
rabbitmq的安装与命令行管理工具rabbitmqadmin的使用

4.2.11 创建队列

5常用命令

5.1修改账号密码

rabbitmqctl change_password username Newpassword

5.2同步镜像

rabbitmqctl sync_queue 队列名称

5.3修改节点类型

修改内存节点为磁盘节点
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster [email protected]
rabbitmqctl start_app

5.4设置开机自启动

chkconfig rabbitmq-server on

2.命令行管理工具rabbitmqadmin的安装使用

1 服务器安装 rabbitmqadmin

1.1 下载

wget http://localhost:15672/cli/rabbitmqadmin

1.2 权限

chmod +x rabbitmqadmin

1.3 修改环境变量

vim /etc/profile
添加
export PATH=$PATH:/usr/local/
立即生效
source /etc/profile

2 rabbitmqadmin命令的使用

2.1 创建exchange(topic类型为例)

rabbitmqadmin declare exchange name=my.topic type=topic

2.2 创建queue

rabbitmqadmin declare queue name=testhzw durable=true

2.3 创建binding

rabbitmqadmin declare binding source=my.topic destination=testhzw routing_key=my.#

注意:source对应创建的exchange, destination对应创建的queue

2.4 发送消息

rabbitmqadmin publish routing_key=my.message.hello exchange=my.topic payload=“hello”

注意:routing_key对应创建binding时的routing_key,#是通配符,my.# 表示

2.5 查看队列里的消息

rabbitmqadmin get queue=test requeue=true(true表示查看不消费,false查看并消费,队列里就没有这条消息了)

2.6 删除队列

rabbitmqadmin delete queue name=test

rabbitmq不仅能用程序发送消息,也能用rabbitmqadmin以命令行的方式发送消息。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-06
  • 2022-12-23
  • 2021-04-19
  • 2021-07-31
  • 2021-09-14
猜你喜欢
  • 2021-07-17
  • 2022-12-23
  • 2021-11-02
  • 2022-12-23
  • 2021-08-22
  • 2021-10-06
  • 2022-12-23
相关资源
相似解决方案