定制网站的优势,最大网络公司排名,江宁区建设工程局网站进不去,七台河新闻视频消息队列概念 消息队列是在消息的传输过程中保存消息的容器。队列的主要目的是提供路由并保证消息的传递#xff1b;如果发送消息时接收者不可用#xff0c;消息队列会保留消息#xff0c;直到可以成功地传递它。 常见的消息队列 RabbitMQ 基于AMQP(高级消息队列协议)基础上…消息队列概念 消息队列是在消息的传输过程中保存消息的容器。队列的主要目的是提供路由并保证消息的传递如果发送消息时接收者不可用消息队列会保留消息直到可以成功地传递它。 常见的消息队列 RabbitMQ 基于AMQP(高级消息队列协议)基础上完成的erlang语言开发的企业消息系统是当前最主流的消息中间件之一下文我们会详细介绍这一种。 ActiveMQ 基于JMS 规范Apache软件基金会所研发的开源产品用 Java 语言实现 RocketMQ 基于JMS 规范阿里公司的开源产品用 Java 语言实现 Kafka 阿里公司的开源产品一种高吞吐量的分布式发布订阅消息系统
持久化对比
简单来说就是将数据存入磁盘而不是存在内存中随服务器重启断开而消失使数据能够永久保存
ActiveMQRabbitMQKafkaRocketMQ文件存储支持支持支持支持数据库支持///
分发策略对比
MQ消息队列有如下几个角色
生产者存储消息消费者
那么生产者生成消息以后MQ进行存储消费者是如何获取消息的呢
一般获取数据的方式无外乎推push或者拉pull两种方式典型的git就有推拉机制我们发送的http请求就是一种典型的拉取数据库数据返回的过 程。而消息队列MQ是一种推送的过程而这些推机制会适用到很多的业务场景也有很多对应推拉机制策略。
ActiveMQRabbitMQRocketMQKafka发布订阅支持支持支持支持轮询分发支持支持/支持公平分发/支持/支持重发支持支持支持/消息拉取/支持支持支持
RabbitMQ概念 RabbitMQ是实现了高级消息队列协议AMQP的开源消息代理软件亦称面向消息的中间件。RabbitMQ服务器是用Erlang语言编写的而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。 AMQP协议 AMQP即Advanced Message Queuing Protocol一个提供统一消息服务的应用层标准高级消息队列协议是应用层协议的一个开放标准为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息并不受客户端/中间件不同产品不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。 是在tcp/ip协议基础之上构建的一种约定成俗的规范和机制它使得遵从该规范的客户端应用和消息中间件服务器的全功能互操作成为可能. 面试题为什么消息中间件不直接使用http协议呢
一是因为http协议的请求和响应报文头都是很复杂的对于一个消息来说不需要这么复杂只需要负责数据的传递存储和分发即可一定要追求的是高性能二是大部分情况下http协议都是短链接这就导致数据可能会丢失而消息中间件是长期获取消息的过程出现问题就要对数据进行持久化目的就是为了保障数据的稳定运行
安装 官网地址: https://www.rabbitmq.com/ 下载地址https://www.rabbitmq.com/download.html 版本兼容
官方版本兼容比较地址https://www.rabbitmq.com/which-erlang.html 一定要注意版本问题 rabbitmqerlangcentos的版本得都得考虑
centos7用erlang23版本或者23以下版本centos8用erlang24版本
查看系统版本号
[roothecs-66166 ~]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.9.2009 (Core)
Release: 7.9.2009
Codename: CoreErlang安装 RabbitMQ是采用Erlang语言开发的所以系统环境必须提供Erlang环境第一步就是安装Erlang。 下载地址 https://www.erlang-solutions.com/downloads/ 这个下载速度非常的慢可以从我的网盘地址 直接下载 将下载的安装包上传到/usr/rabbitmq包下需要新建目录rabbitmq 安装命令 rpm -ivh erlang-21.3-1.el7.x86_64.rpm查看版本 erl -vsocat安装 RabbitMQ需要的依赖socat和logrotatelogrotate操作系统中已经存在了只需要安装socat就 可以了。 安装命令 yum install -y socatRabbitMQ安装 下载地址 https://www.rabbitmq.com/download.html这个下载速度也是非常的慢可以从我的网盘地址 直接下载 将下载的安装包上传到/usr/rabbitmq包下 安装命令 rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm启动服务 [roothecs-66166 rabbitmq]# systemctl start rabbitmq-server
[roothecs-66166 rabbitmq]# systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ brokerLoaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)Active: active (running) since Wed 2023-05-10 02:19:55 CST; 11s agoMain PID: 10260 (beam.smp)Status: InitializedCGroup: /system.slice/rabbitmq-server.service├─10260 /usr/lib64/erlang/erts-10.3/bin/beam.smp -W w -K true -A 64 -MBas ageffcbf -MHas...├─10365 erl_child_setup 32768├─10390 /usr/lib64/erlang/erts-10.3/bin/epmd -daemon├─10413 inet_gethost 4└─10414 inet_gethost 4May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: ########## Licensed under the MPL 2.0. Websi...com
May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Doc guides: https://rabbitmq.com/documentation.html
May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Support: https://rabbitmq.com/contact.html
May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Tutorials: https://rabbitmq.com/getstarted.html
May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Monitoring: https://rabbitmq.com/monitoring.html
May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Logs: /var/log/rabbitmq/rabbithecs-66166.log
May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: /var/log/rabbitmq/rabbithecs-66166_upgrade.log
May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Config file(s): (none)
May 10 02:19:55 hecs-66166 rabbitmq-server[10260]: Starting broker... completed with 0 plugins.
May 10 02:19:55 hecs-66166 systemd[1]: Started RabbitMQ broker.
Hint: Some lines were ellipsized, use -l to show in full.命令 # 启动服务systemctl start rabbitmq-server
# 查看服务状态systemctl status rabbitmq-server
# 停止服务systemctl stop rabbitmq-server
# 开机启动服务systemctl enable rabbitmq-server相关端口
5672:RabbitMQ的通讯端口25672:RabbitMQ的节点间的CLI通讯端口是15672:RabbitMQ HTTP_API的端口管理员用户才能访问用于管理RabbitMQ,需要启动Management插件。18838883MQTT插件启动时的端口。61613、61614STOMP客户端插件启用的时候的端口。15674、15675基于webscoket的STOMP端口和MOTT端口
图形化管理界面及授权操作
安装 安装命令 rabbitmq-plugins enable rabbitmq_management重启mq服务 systemctl restart rabbitmq-server一定要记住在对应服务器(阿里云腾讯云等)的安全组中开放15672的端口如果有安装的宝塔同样也要开放15672端口 浏览器访问http://ip:15672/
授权账号和密码 新增用户 rabbitmqctl add_user admin admin设置用户角色 用户级别
1、administrator 可以登录控制台、查看所有信息、可以对rabbitmq进行管理
2、monitoring 监控者 登录控制台查看所有信息
3、policymaker 策略制定者 登录控制台,指定策略
4、managment 普通管理员 登录控制台[roothecs-66166 rabbitmq]# rabbitmqctl set_user_tags admin administrator
Setting tags for user admin to [administrator] ...为用户设置权限 rabbitmqctl set_permissions -p / admin .* .* .*登录访问 命令小结 #添加用户
rabbitmqctl add_user 账号 密码
#设置用户操作角色
rabbitmqctl set_user_tags 账号 administrator
#修改用户密码
rabbitmqctl change_password Username Newpassword 修改密码
#删除用户
rabbitmqctl delete_user Username
#查看用户清单
rabbitmqctl list_users 查看用户
#设置用户资源权限
rabbitmqctl set_permissions -p / 用户名 .* .* .* 用户角色分类 none 什么也干不了也无法登陆到图形化界面, 基本也没有用 management 普通管理员 相当于个人中心只查看自己的相关节点信息 policymaker 策略制定者 在个人中心基础上可以管理 (创建、删除) 自己的虚拟机节点和参数信息 monitoring 监控者 和管理员一样除了看自己的还是看别人的但是只能看不能操作别人的 Administrator 超级管理员 顶级管理员可登陆控制台、查看所有信息、可对 rabbitmq进行管理 全部
页面介绍 Overview 主要展示的是MQ的概要信息 , 如消息的数量ConnectionChannelExchangeQueueConsumer的数量 connections 查看生产者或消费者与RabbitMQ建立连接后的信息 channels 通道建立连接后会形成通道消息的投递获取依赖通道 Exchanges 交换机用来实现消息的路由主要展示的是当前虚拟主机下的交换器也可以在此添加一个新的交换器 并且配置对应的交换器的规则属性 Queues 队列即消息队列消息存放在队列中等待消费消费后被移除队列 Admin 系统管理展示的是用户管理的信息 包含用户列表的展示添加用户添加虚拟主机等信息