Centos7.9安装rabbitmq

1. 概述

AMQP,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。2006年,AMQP 规范发布。类比HTTP。
在这里插入图片描述

AMQP这个过程就是:由生产者发布消息到交换机,交换机再通过路由规则将消息发送到不同的队列中去存储,然后消费者从队列中监听拿走对应的消息来消费。

2007年,Rabbit 技术公司基于 AMQP 标准开发的 RabbitMQ 1.0 发布。RabbitMQ 采用 Erlang 语言开发。Erlang 语言由 Ericson 设计,专门为开发高并发和分布式系统的一种语言,在电信领域使用广泛。
Rabbitmq架构图
在这里插入图片描述

RabbitMQ概念:

Broker:接收和分发消息的应用,RabbitMQ Server就是 Message Broker
Virtual host:出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个vhost,每个用户在自己的 vhost 创建 exchange/queue 等
Connection:publisher/consumer 和 broker 之间的 TCP 连接
Channel:如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立TCP Connection的开销将是巨大的,效率也较低。Channel 是在 connection 内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的 channel 进行通讯,AMQP method 包含了channel id 帮助客户端和message broker 识别 channel,所以 channel 之间是完全隔离的。Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销
Exchange:message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发消息到queue 中去。常用的类型有:direct (point-to-point), topic (publish-subscribe) and fanout (multicast)
Queue:消息最终被送到这里等待 consumer 取走Binding:exchange 和 queue 之间的虚拟连接,binding 中可以包含routing key。Binding 信息被保存到 exchange 中的查询表中,用于 message 的分发依据

6 种工作模式:

  • 简单模式
  • work queues
  • Publish/Subscribe 发布与订阅模式
  • Routing路由模式
  • Topics 主题模式
  • RPC 远程调用模式(远程调用,不太算 MQ;暂不作介绍)
    官网对应模式介绍:https://www.rabbitmq.com/getstarted.html

2. 下载安装资源

[root@localhost software]# mkdir rabbitmq
[root@localhost software]# cd rabbitmq/
[root@localhost rabbitmq]# wget --content-disposition https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.10/erlang-23.3.4.10-1.el7.x86_64.rpm
[root@localhost rabbitmq]# wget --content-disposition https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.16/rabbitmq-server-3.9.16-1.el7.noarch.rpm
[root@localhost rabbitmq]# wget --content-disposition http://www.rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/socat-1.7.3.2-2.el7.x86_64.rpm
[root@localhost rabbitmq]# wget --content-disposition https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/tag/3.9.0/rabbitmq_delayed_message_exchange-3.9.0.ez
[root@localhost rabbitmq]# ls -lh
total 34M
-rw-r--r-- 1 root root  20M Dec 22  2021 erlang-23.3.4.10-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 158K Mar 27 09:39 rabbitmq_delayed_message_exchange-3.9.0.ez
-rw-r--r-- 1 root root  15M Apr 27  2022 rabbitmq-server-3.9.16-1.el7.noarch.rpm
-rw-r--r-- 1 root root 290K Aug 10  2017 socat-1.7.3.2-2.el7.x86_64.rpm

3. 检查与卸载

#卸载erlang
[root@localhost rabbitmq]# yum list | grep erlang
[root@localhost rabbitmq]# find / -name erlang
/usr/lib64/erlang
[root@localhost rabbitmq]# rm -rf /usr/lib64/erlang
[root@localhost rabbitmq]# yum -y remove erlang-*
[root@localhost rabbitmq]# yum remove erlang.x86_64
#卸载rabbitmq
[root@localhost rabbitmq]# yum list | grep rabbitmq
[root@localhost rabbitmq]# yum -y remove rabbitmq-server.noarch
[root@localhost rabbitmq]# whereis rabbitmq
[root@localhost rabbitmq]# rm -rf /usr/lib/rabbitmq
[root@localhost rabbitmq]# rm -rf /etc/rabbitmq
[root@localhost rabbitmq]# find / -name rabbitmq
[root@localhost rabbitmq]# rm -rf /var/lib/rabbitmq
[root@localhost rabbitmq]# rm -rf /var/log/rabbitmq
[root@localhost rabbitmq]# rm -rf /run/rabbitmq
[root@localhost rabbitmq]# rm -rf /etc/selinux/targeted/active/modules/100/rabbitmq
[root@localhost rabbitmq]# rm -rf /etc/selinux/targeted/tmp/modules/100/rabbitmq
#安装编译环境
[root@localhost rabbitmq]# yum -y install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz
#安装erlang
[root@localhost rabbitmq]# rpm -ivh erlang-23.3.4.10-1.el7.x86_64.rpm
[root@localhost rabbitmq]# erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 11.2.2.9
#安装socat
[root@localhost rabbitmq]# rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
#安装rabbitmq
[root@localhost rabbitmq]# rpm -ivh rabbitmq-server-3.9.16-1.el7.noarch.rpm
[root@localhost rabbitmq]# rpm -qa | grep rabbitmq
#安装rabbitmq_delayed延时队列插件
[root@localhost rabbitmq]# cp rabbitmq_delayed_message_exchange-3.9.0.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.9.16/plugins
[root@localhost rabbitmq]# cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.9.16/plugins
[root@localhost plugins]# rabbitmq-plugins enable rabbitmq_delayed_message_exchange
#rabbitmq服务[启动|停止|重启|状态|自启]
[root@localhost plugins]# vi /etc/hosts
添加 127.0.0.1 mail
[root@localhost plugins]# systemctl start rabbitmq-server
[root@localhost plugins]# journalctl -u rabbitmq-server
[root@localhost plugins]# systemctl [start|stop|restart|status|enable] rabbitmq-server
#创建相关账户
[root@localhost plugins]# rabbitmqctl add_user ubox *********
[root@localhost plugins]# rabbitmqctl set_user_tags ubox administrator
[root@localhost plugins]# rabbitmqctl set_permissions -p "/" ubox ".*" ".*" ".*"
[root@localhost plugins]# rabbitmqctl add_vhost ubox
[root@localhost plugins]# rabbitmqctl list_vhosts
[root@localhost plugins]# rabbitmqctl list_users
#其他命令行
#添加用户
rabbitmqctl add_user 用户名 密码
#删除用户
rabbitmqctl  delete_user  用户名
#修改用户密码
rabbitmqctl  change_password  用户名  新密码
#查看用户列表
rabbitmqctl  list_users
#分配用户角色
rabbitmqctl set_user_tags ubox administrator
#添加虚拟机
rabbitmqctl add_vhost xxx
#删除虚拟机
rabbitmqctl delete_vhost xxx
#查看虚拟机列表
#rabbitmqctl list_vhosts
#分配用户具体权限 
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
#清除用户权限
rabbitmqctl  clear_permissions  [-p VHostPath]  User
#先查看所有开放的端口号
sudo firewall-cmd --zone=public --list-ports
#开放15672和5672端口
iptables -I INPUT -p tcp --dport 5672 -j ACCEPT
iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
#重载使上述命令生效
firewall-cmd --reload

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/641675.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在PostgreSQL中使用索引覆盖扫描提高查询性能?

文章目录 解决方案1. 创建合适的索引2. 确保查询能够使用索引覆盖扫描3. 调整查询以利用索引覆盖扫描4. 监控和调优 示例代码1. 创建索引2. 编写查询3. 检查是否使用索引覆盖扫描4. 调整索引 总结 在PostgreSQL中,索引是提高查询性能的关键工具之一。索引允许数据库…

vscode自动生成项目目录结构

目录结构如下: 生成步骤如下: vscode安装插件,project-tree安装之后按ctrlshiftp,并输入Project Tree回车点击要生成目录的项目,回车将项目目录生成并存储到README.md中

Redis篇:实现短信登录

实现的是黑马点评的手机号短信验证码登录功能 1.实现流程 发送验证码: 用户在提交手机号后,会使用正则表达式校验手机号是否合法,如果不合法,则要求用户重新输入手机号 如果手机号合法,后台此时生成对应的验证码&a…

【力扣 Hot100 | 第六天】4.21(最长连续序列)

文章目录 10.最长连续序列10.1题目10.2解法:哈希法10.2.1哈希思路10.2.2代码实现 10.最长连续序列 10.1题目 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时…

HSB矩形调色板设计和计算方法

HSB矩形调色板设计和计算方法 RGB调色板绘制较容易,HSB调色板较难绘制,前些天发文介绍了几个矩形样例的绘制方法,今介绍矩形的HSB调色板的设计方法和H,S,B值的计算方法,好东西必须与大家分享。 此文介绍HSB调色板和选色条的绘制方…

idea上传项目到gitee(码云)

1、打开码云,新建仓库 2、创建 3、这就是创建成功的页面 4、复制仓库地址,后面需要用到 2、打开我们的项目:例如我现在的项目 1、idea创建git仓库 2、选择我们项目文件夹的目录 3、查看文件是否变色,变色表示成功了 4、添加到缓…

【Java】Java基础 使用集合实现斗地主分牌

📝个人主页:哈__ 期待您的关注 今天使用集合TreeSet来实现一个斗地主的分牌流程。 TreeSet集合的一个特点就是 元素有序,这样就方便我们分的牌自动排序。 0.思路 1.创建玩家手牌集合 我们到时候分的牌都存储在这里,但你可能会…

Web前端安全问题分类综合以及XSS、CSRF、SQL注入、DoS/DDoS攻击、会话劫持、点击劫持等详解,增强生产安全意识

前端安全问题是指发生在浏览器、单页面应用、Web页面等前端环境中的各类安全隐患。Web前端作为与用户直接交互的界面,其安全性问题直接关系到用户体验和数据安全。近年来,随着前端技术的快速发展,Web前端安全问题也日益凸显。因此&#xff0c…

山海鲸电力看板:运维数据一目了然

在信息化高速发展的今天,电力行业的运维管理也迎来了前所未有的变革。山海鲸可视化智慧电力运维可视化看板,以其独特的数据整合能力和直观的可视化效果,成为了电力行业运维管理的得力助手,为电力的稳定运行提供了强大的技术支撑。…

[图解]软件开发中的糊涂用语-05-非功能需求算不算糊涂用语

0 00:00:00,350 --> 00:00:02,997 今天呢,我们来看一个用语 1 00:00:02,997 --> 00:00:04,100 非功能需求 2 00:00:04,620 --> 00:00:07,060 这个算不算糊涂用语 3 00:00:09,890 --> 00:00:13,000 这是来自一个学员的问题 4 00:00:13,000 --> 00…

详解Mixtral-8x7B背后的MoE!

高端的模型往往只需最朴素的发布方式。 这个来自欧洲的大模型团队在12月8日以一条磁力链接的方式发布了Mixtral-8x7B,这是一种具有开放权重的**「高质量稀疏专家混合模型」**(SMoE)。 该模型在大多数基准测试中都优于Llama2-70B,相比之下推理速度快了6倍,同时在大多数标准基…

内存泄漏详解

一、什么是内存泄漏?二、内存泄漏的原因三、内存泄漏的影响四、如何检测和解决内存泄漏?五、总结 一、什么是内存泄漏? 内存泄漏指的是程序中已分配的内存没有被正确释放,导致这部分内存无法被再次利用,最终导致内存资…