rabbitmq 单机部署以及集群部署(多机单节点,单机多节点)

在win下cmd(Windows向centos7(lunix)发送文件):

  1. sftp 用户名@ip;
  2. cd 和 pwd 是centos7操作打开文件
  3. lcd,lpwd是windows操作打开文件
  4. 通过 put 文件名地址  centos7下文件夹名(put后加上-r发送整个文件夹)

   

Centos7:给用户或用户组分配文件夹权限:
1. /opt 目录的所有者更改为 username:  sudo chown username /opt

2. /opt 目录的所有者更改为 username,所属组更改为 groupname:

sudo chown username:groupname /opt

  1. erlangrabbitmq安装步骤:

  

  1. # rabbitmq 需要 erlang 环境 :

rpm -ivh erlang-21.3-1.el7.x86_64.rpm

  1. # rabbitmq 需要的依赖包

yum install socat -y

# 安装 rabbitmq

rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm

查看安装路径:rpm -ql rabbitmq-server

查看安装状态:rpm -qa | grep rabbitmq

  1. 配置和启动命令

 # 添加开机启动 RabbitMQ 服务

 chkconfig rabbitmq-server on

# 启动服务 sudo systemctl start rabbitmq-server

# 查看服务状态 sudo systemctl status rabbitmq-server     

  1.  # 开启 web 管理插件:rabbitmq-plugins enable rabbitmq_management

6.添加主机名和本地ip的映射原因:

1. 解析主机名:RabbitMQ 在启动时会使用主机名来标识节点。

2. 一致性: 在集群环境中,所有节点上的主机名和 IP 映射必须一致,

以确保节点之间的通信不会出问题。

3. 集群通信: 在多节点集群中,节点之间需要通过主机名进行通信。

7.配置防火墙, 开放 15672 端口(web 管控台访问端口), 否则外网无法访问

1) 防火墙开启端口访问

firewall-cmd --zone=public --add-port=15672/tcp --permanent

2) 开启后需要重启防火墙才生效

firewall-cmd –-reload

 3) 执行

firewall-cmd --list-ports  查看端口

查看端口号:ss -tnlp

8. 配置 RabbitMQ, guest 用户可以远程登录

   - 在/etc/rabbitmq 目录下创建 rabbitmq.config

   

rabbitmq.config 中填写 [{rabbit,[{loopback_users,[]}]}].

重启MQ 生效。

9.开启MQTT协议 :  rabbitmq-plugins enable rabbitmq_mqtt

            

10.后台启动节点rabbitmq-server -detached

11.设置新的主机名sudo hostnamectl set-hostname new_hostname

12.设置虚拟机的固定IP

进入centos7命令行界面,修改如下内容:

#cd /etc/sysconfig/network-scripts/
#sudo vi ifcfg-en33

修改:BOOTPROTO="static",更改BOOTPROTOstatic

添加:DNS1=114.114.114.114 #这个是国内的DNS地址,是固定的;

IPADDR=192.168.20.133 #你想要设置的固定IP

NETMASK=255.255.255.0 #子网掩码,不需要修改;

GATEWAY=192.168.20.2,网关

多机单节点集群搭建:

  1. 配置端口和主机名映射并将主机1 克隆成主机23

2、将erlang.cookie 文件中 cookie 值 将node1中的 .erlang.cookie 同步到 rabbitmq@node2中 

scp /var/lib/rabbitmq/.erlang.cookie rabbit@node2:/var/lib/rabbitmq/.erlang.cookie

3、Rabbitmq 集群添加节点

#重启 node2机器中 rabbitmq 的服务 在 node2执行 

rabbitmqctl stop_app 

rabbitmqctl reset

rabbitmqctl join_cluster ‐‐ram rabbit@node1

rabbitmqctl start_app 

(rabbitmq‐plugins enable rabbitmq_management 

systemctl restart rabbitmq‐server.service)

4、查看集群信息  rabbitmqctl cluster_status

单机多节点

1.查看当前RabbitMQ服务,看到是在运行中,先暂停该服务。

# ps aux|grep rabbitmq 或者systemctl status rabbitmq-server 查看服务状态,确保是能运行起来的 running

systemctl status rabbitmq-server

# 停止服务

systemctl stop rabbitmq-server

2.# 启动第一个节点rabbit-1

sudo RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit-1 rabbitmq-server start &

# 启动第二个节点rabbit-2

# 注意:web管理插件端口占用,所以还要指定其web插件占用的端口号

# RABBITMQ_SERVER_START_ARGS=”-rabbitmq_management listener [{port,15673}]”

sudo RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit31 rabbitmq-server start &

# 验证启动

ps aux|grep rabbitmq

3.#绑定集群

# rabbit-1操作作为主节点

#停止应用

sudo rabbitmqctl -n rabbit-1 stop_app

#目的是清除节点上的历史数据(如果不清除,无法将节点加入到集群)

sudo rabbitmqctl -n rabbit-1 reset

#启动应用

sudo rabbitmqctl -n rabbit-1 start_app

# rabbit2操作为从节点

# 停止应用

sudo rabbitmqctl -n rabbit-2 stop_app

# 目的是清除节点上的历史数据(如果不清除,无法将节点加入到集群)

sudo rabbitmqctl -n rabbit-2 reset

# rabbit2节点加入到rabbit1(主节点)集群当中【Server-node服务器的主机名】

sudo rabbitmqctl -n rabbit-2 join_cluster rabbit-1@'songdanminserver'

# 启动应用

sudo rabbitmqctl -n rabbit-2 start_app

# 验证集群状态

sudo rabbitmqctl cluster_status -n rabbit-1

//集群有两个节点:rabbit-1@服务器主机名、rabbit-2@服务器主机名

4.Web监控、设置账号密码

# 节点1设置用户、密码,管理权限,对虚拟机/的配置、写入读取权限

rabbitmqctl -n rabbit-1 add_user admin admin

rabbitmqctl -n rabbit-1 set_user_tags admin administrator

rabbitmqctl -n rabbit-1 set_permissions -p / admin ".*" ".*" ".*"

# 节点1设置用户、密码,管理权限,对虚拟机/的配置、写入读取权限

rabbitmqctl -n rabbit-2 add_user admin admin

rabbitmqctl -n rabbit-2 set_user_tags admin administrator

rabbitmqctl -n rabbit-2 set_permissions -p / admin ".*" ".*" ".*"

RabbitMQ 路由规则:

           

在 RabbitMQ 中,路由键(Routing Key)和绑定键(Binding Key)是两个关键的概念,它们共同决定了消息如何从生产者发送到正确的队列。理解它们之间的关系对于正确配置和使用 Topic 交换机尤为重要。

路由键(Routing Key)
定义:路由键是生产者在发送消息时指定的一个字符串,用于告诉交换机如何处理这条消息。
格式:通常是一个点分隔的字符串,例如 stock.usd.nyse。
作用:路由键用于匹配绑定键,从而决定消息应该被发送到哪些队列。
绑定键(Binding Key)
定义:绑定键是队列在绑定到交换机时指定的一个字符串,用于定义队列接收消息的条件。
格式:通常也是一个点分隔的字符串,可以包含通配符 * 和 #。
*:匹配一个单词。
#:匹配零个或多个单词。
作用:绑定键用于匹配路由键,从而决定哪些消息会被路由到该队列。
 

示例
假设我们有以下路由键和绑定键:

路由键:
stock.usd.nyse
stock.gbp.london
news.europe.politics
news.usa.economy
绑定键:
stock.*.*:匹配所有股票相关的消息,无论货币和交易所。
stock.#:匹配所有股票相关的消息,无论货币和交易所。
news.*.politics:匹配所有政治相关的新闻,无论地区。
news.*.*:匹配所有新闻,无论地区和类别。

你可能感兴趣的:(rabbitmq,java-rabbitmq)