NicholasTao / NicholasTao.github.io

✨ Build a beautiful and simple website in literally minutes. Demo at https://beautifuljekyll.com
https://beautifuljekyll.com
MIT License
0 stars 0 forks source link

RabbitMQ #4

Open NicholasTao opened 2 years ago

NicholasTao commented 2 years ago

[TOC]

草原订单问题

1000个客人派信使向100个蒙古包下发羊肉订单。

客人: 要派信使去哪个蒙古包?蒙古包在哪里?哪个蒙古包比较空闲?信使中途被狼吃了怎么办?

路政: 1000*100 = 10万 条道路,如何建造维护?

草原邮局

邮局通知:即日起,客人可以将订单送到邮局中;蒙古包老板可以从邮局取订单

消息号(订单号)message id dd0007
消息内容(订单内容)context 羊肉5斤

客人: 只要送到邮局就可以了,方便

路政: 1000+100 = 1100 条道路,方便

Message Queue Compares - ijayer

消息队列:

### 命令1.1 查询当前所有队列
/usr/local/lib/rabbitmq/sbin/rabbitmqctl list_queues

我们的RabbitMQ

使用组件的: 网络、计算...(tip: rabbitmq异常时,一般会引起部分组件fault或不可用,在相关组件错误日志中会有)

定位技巧1.1: rabbitmq异常时,一般会引起部分组件fault或不可用,在相关组件错误日志中用以下命令查询
### 命令1.2 查询组件错误日志中是否有rabbitmq相关错误
zgrep -E "amqp|queue"

当前版本: 3.8.22 (OpenStack 8.1.1)

用途: 仅采用rabbitmq的基本消息传递功能,对没有消息防丢失没有很强要求。

定位技巧1.2 采用重启rabbitmq的方式恢复故障时,一般不会因消息丢失带来组件异常

周边代码:

​ cps-rabbitmq: rabbitmq的启停、监控、配置管理

​ oslo-messaging: rabbitmq的调用api库, 组件实际是通过调用oslo-messaging代码与rabbitmq通讯的。

常见问题

### 命令 查询当前节点rabbitmq启停时间
zgrep "enter main" /var/log/fusionsphere/component/rabbitmqControl/* | sed -E 's/.*([0-9]{4}-.*?)lo.*(\/u.*ontrol[ |A-Z|-]*).*/\1 \2/'

>>> 2022-05-06T00:04:30.540+08:00  /usr/local/bin/rabbitmqControl -S RUN -HA STANDBY -N