千万PV 网站架构之 RabbitMQ 消息列队

本文详细介绍RabbitMQ的基本概念及工作原理,并提供了一个实际的RabbitMQ集群部署案例,包括环境配置、服务安装、集群搭建步骤及最终的集群状态验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RabbitMQ 简介 :

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

MQ特点

  • MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义,而MQ则是遵循了AMQP协议的具体实现和产品。

RabbitMQ 结构图 :

千万PV 网站架构之 RabbitMQ 消息列队

  • Exchange : 消息交换机,它指定消息按什么规则,路由到那个列队。
  • Queue : 消息列队载体,每个消息都会被投入到一个或多个列队中。
  • Routing Key : 路由关键字,Exchange 根据这个关键字进行消息投递。

消息列队的使用过程 :

  • 1.客户端连接到消息列队服务器,打开一个 Channel(消息通道)。
  • 2.客户端声明一个 Exchange,并设置相关属性。
  • 3.客户端声明一个 Queue ,并设置相关属性。
  • 4.客户端使用 Routing Key,在 Exchange和 Queue之间建立好绑定关系。
  • 5.客户端投递消息到 Exchange。

本案环境 :

主机名系统IP地址防火墙和SELinux用途
mq01CentOS 7.3192.168.217.137关闭磁盘节点
mq02CentOS 7.3192.168.217.138关闭内存节点
mq03CentOS 7.3192.168.217.139关闭内存节点

RabbitMQ 群集部署 :

1.修改所有主机名(重启生效):

systemctl stop firewalld.service
setenforce 0

vim /etc/hostname    #其他两台相同
mq01.localdomain

vim /etc/hosts        #添加
192.168.217.137 mq01
192.168.217.138 mq02
192.168.217.139 mq03

2.安装 rabbitmq 服务 :

yum install -y epel-release     #安装epel源

yum install -y rabbitmq-server  #安装rabbitmq服务
[root@mq01 ~]# /usr/lib/rabbitmq/bin/rabbitmq-plugins list  #查看插件安装信息
[ ] amqp_client                       3.3.5
[ ] cowboy                            0.5.0-rmq3.3.5-git4b93c2d
[ ] eldap                             3.3.5-gite309de4
[ ] mochiweb                          2.7.0-rmq3.3.5-git680dba8
......
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management #启动群集管理服务

3.配置群集功能 :

vim /var/lib/rabbitmq/.erlang.cookie
#把mq01.erlang.cookie内容复制到mq02、mq03 
systemctl restart rabbitmq-server.service   #重启服务

4.在mq02、mq03上操作,加入mq01群集 :

rabbitmqctl stop_app   #关闭节点

rabbitmqctl join_cluster --ram rabbit@mq01 #加入到磁盘节点

rabbitmqctl start_app    #开启节点

5.验证集群状态 :

[root@mq01 ~]# rabbitmqctl cluster_status     #查看状态
Cluster status of node rabbit@mq01 ...
[{nodes,[{disc,[rabbit@mq01]},{ram,[rabbit@mq03,rabbit@mq02]}]},
 {running_nodes,[rabbit@mq03,rabbit@mq02,rabbit@mq01]},
 {cluster_name,<<"rabbit@mq01">>},
 {partitions,[]}]
#磁盘节点为mq01,内存节点为mq02、mq03.

6.web管理 :

浏览器访问 http://192.168.217.137:15672/ #默认用户名:guest 密码:guest

千万PV 网站架构之 RabbitMQ 消息列队

转载于:https://blog.51cto.com/13640803/2153258

资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 “STC单片机电压测量”是一个以STC系列单片机为基础的电压检测应用案例,它涵盖了硬件电路设计、软件编程以及数据处理等核心知识点。STC单片机凭借其低功耗、高性价比和丰富的I/O接口,在电子工程领域得到了广泛应用。 STC是Specialized Technology Corporation的缩写,该公司的单片机基于8051内核,具备内部振荡器、高速运算能力、ISP(在系统编程)和IAP(在应用编程)功能,非常适合用于各种嵌入式控制系统。 在源代码方面,“浅雪”风格的代码通常简洁易懂,非常适合初学者学习。其中,“main.c”文件是程序的入口,包含了电压测量的核心逻辑;“STARTUP.A51”是启动代码,负责初始化单片机的硬件环境;“电压测量_uvopt.bak”和“电压测量_uvproj.bak”可能是Keil编译器的配置文件备份,用于设置编译选项和项目配置。 对于3S锂电池电压测量,3S锂电池由三节锂离子电池串联而成,标称电压为11.1V。测量时需要考虑电池的串联特性,通过分压电路将高电压转换为单片机可接受的范围,并实时监控,防止过充或过放,以确保电池的安全和寿命。 在电压测量电路设计中,“电压测量.lnp”文件可能包含电路布局信息,而“.hex”文件是编译后的机器码,用于烧录到单片机中。电路中通常会使用ADC(模拟数字转换器)将模拟电压信号转换为数字信号供单片机处理。 在软件编程方面,“StringData.h”文件可能包含程序中使用的字符串常量和数据结构定义。处理电压数据时,可能涉及浮点数运算,需要了解STC单片机对浮点数的支持情况,以及如何高效地存储和显示电压值。 用户界面方面,“电压测量.uvgui.kidd”可能是用户界面的配置文件,用于显示测量结果。在嵌入式系统中,用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值