前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ面试必备知识点及实战(二)-核心概念

RabbitMQ面试必备知识点及实战(二)-核心概念

作者头像
JavaEdge
发布2022-11-30 15:08:50
3180
发布2022-11-30 15:08:50
举报
文章被收录于专栏:JavaEdgeJavaEdge

目录

1 为什么使用 RabbitMQ

开源的消息代理和队列服务器,通过普通协议在完全不同的应用间共享数据,使用Erlang语言编写,并且基于AMQP协议。

据报道,滴滴、美团、头条、去哪儿、艺龙…都选择了它:

  • 开源,性能优秀,稳定性有保障
  • 提供可靠性消息投递模式(confirm),返回模式(return)
  • 与Spring AMQP完美整合,API丰富
  • 集群模式丰富,表达式配置,HA模式,镜像队列模型
  • 保证数据不丢失的前提做到高可靠性、可用性

2 高性能之源

  • Erlang语言 最初在于交换机领域的架构模式,这样使得RabbitMQ在Broker之间进行数据交互的性能非常优秀
  • Erlang的优点 Erlang有着和原生Socket一样的延迟

3 AMQP协议

AMQP,Advanced Message Queuing Protocol,高级消息队列协议。 一个提供统一消息服务的应用层标准的二进制的高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于该协议的客户端与消息中间件可传递消息,并不受客户端/中间件同产品、不同的开发语言等条件的限制。

  • AMQP的实现 RabbitMQ、OpenAMQ、Apache Qpid、Redhat、Enterprise MRG、AMQP Infrastructure、ØMQ、Zyre等。

4 协议模型

协议模型
协议模型

5 AMQP核心概念

  • Server,又称Broker 接受客户端的连接,实现AMQP实体服务
  • Connection 连接 应用程序与Broker的网络连接
  • Channel,网络信道 几乎所有操作都在Channel中进行,Channel是进行消息读写的通道。客户端可建立多个Channel,每个Channel代表一个会话任务
  • Message:消息 服务器和应用程序之间传送的数据,由Properties和Body组成。
    • Properties 可修饰消息, 比如消息的优先级、延迟等高级特性
    • Body 消息体内容
  • Virtual host:虚拟地址 用于逻辑隔离,最上层的消息路由,类似命名空间。一个Virtual Host里可以有若干Exchange和Queue,同一Virtual Host里不能有相同名称的Exchange或Queue
  • Exchange:交换机 接收消息,根据路由键转发消息到绑定的队列
  • Binding Exchange和Queue之间的虚拟连接,binding中可以包含routing key
  • Routing key 一个路由规则,虚拟机可用它来确定如何路由一个特定消息
  • Queue,也称为Message Queue,消息队列 保存消息并将它们转发给消费者

6 RabbitMQ工作架构模型

7 特性

1、可靠性 2、灵活的路由 3、消息集群 4、高可用 5、多种协议 6、多语言客户端 7、管理界面 8、插件机制

8 基本使用

8.1 常用命令

  • 启动服务
代码语言:javascript
复制
rabbitmq-server start &
  • 停止服务
代码语言:javascript
复制
rabbitmqctl stop_ app
  • 管理插件
代码语言:javascript
复制
rabbitmq-plugins enable rabbitmq_ management
  • 访问地址 http://192.168.11.76:15672/

8.2 重启操作

启动成功
启动成功

9 quickstart - 消息的生产与消费

9.1 基本构建缺一不可

  • ConnectionFactory:获取连接工厂
  • Connection:一个连接
  • Channel:数据通信信道,可发送和接收消息
  • Queue:具体的消息存储队列
  • Producer & Consumer生产和消费者

9.2 实操演示

  • Pro
  • Con

由于是Con端才创建有对列,所以必须先启动Con端,再启动Pro端! 分别启动运行

10 命令行与管控台常规操作

10.1 常用命令行

  • rabbitmqctl stop_ app: 关闭应用
  • rabbitmqctl start app: 启动应用
  • rabbitmqctl status: 节点状态
  • rabbitmqctl add_ user username password:添加用户
  • rabbitmqctl list users:列出所有用户
  • rabbitmqctl delete_ user username:删除用户
  • rabbitmqctl clear permissions -p vhostpath username:清除用户权限
  • rabbitmqctl list user_ permissions username:列出用户权限
  • rabbitmqctl change_ password username newpassword:修改密码
  • rabbitmqctl set permissions -p vhostpath username
  • “."".”".*": 设置用户权限
  • rabbitmqctl add vhost vhostpath:创建虚拟主机
  • rabbitmqctl list vhosts: 列出所有虚拟主机
  • rabbitmqctl list_ permissions -p vhostpath:列出虚拟主机上所有权限
  • rabbitmqctl delete vhost vhostpath:删除虚拟主机
  • rabbitmqctl list queues:查看所有队列信息
  • rabbitmqctl -p vhostpath purge_ queue blue:清除队列里的消息
  • rabbitmqctl reset:移除所有数据,要在rabbitmqctl stop_ app之后使用
  • rabbitmqctl join_cluster < clusternode > [- -ram] :组成集群命令
  • rabbitmqctl cluster status: 查看集群状态
  • rabbitmqctl change_ cluster_ node type disc | ram 修改集群节点的存储形式
  • rabbitmqctl forget_ cluster_ node [–offline]忘记节点(摘除节点)
  • rabbitmqctl rename_cluster_node oldnode1 newnode1 [oldnode2] [newnode2…]修改节点名称

实操

  • 查看端口占用
  • ctl命令

10.2 管控台的管理

  • 主界面
  • 主界面-监测全部信息
  • 主界面-当前节点的状态
  • 主界面-当前节点一些存储路径
  • 主界面-端口号集锦
  • 主界面-配置文件的导入导出
  • 管控台connection界面
  • 管控台channel界面
  • 管控台queues界面
  • 管控台Exchanges界面
  • 管理员界面-添加用户
  • 管理员界面-添加虚拟主机
  • 管理员界面-集群管理

14 绑定(Binding)

  • Exchange和Exchange、Queue之间的连接关系
  • Binding中可以包含RoutingKey或者参数

15 Queue-消息队列

  • 消息队列,实际存储消息数据
  • Durability: 是否持久化,Durable: 是,Transient: 否
  • Auto delete:如选yes,代表当最后一个监听被移除之后,该Queue会自动被删除.

16 Message-消息

  • 服务器和应用程序之间传送的数据
  • 本质上就是一段数据,由Properties和Payload ( Body )组成

16.1 常用属性

delivery mode、headers (自定义属性) content_ type. content_ encoding. priority correlation id. reply to

expiration - 过期时间

这里就牵涉到RabbitMQ的TTL机制

message_ id timestamp. type. user id. app_ id. cluster id

实操演示

  • Con
  • 启动消费端
  • Pro,注意TTL为10s
  • 接着启动Pro,Con接收消息
  • 现在5条消息,10s后为0消息全部已清除

通过本文的学习,希望大家对RabbitMQ有一个整体感知!

参考

RabbitMQ官网 mac + RabbitMQ 安装

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1 为什么使用 RabbitMQ
  • 2 高性能之源
  • 3 AMQP协议
  • 4 协议模型
  • 5 AMQP核心概念
  • 6 RabbitMQ工作架构模型
  • 7 特性
  • 8 基本使用
    • 8.1 常用命令
      • 8.2 重启操作
      • 9 quickstart - 消息的生产与消费
        • 9.1 基本构建缺一不可
          • 9.2 实操演示
          • 10 命令行与管控台常规操作
            • 10.1 常用命令行
              • 实操
                • 10.2 管控台的管理
                • 14 绑定(Binding)
                • 15 Queue-消息队列
                • 16 Message-消息
                  • 16.1 常用属性
                    • expiration - 过期时间
                  • 实操演示
                  • 参考
                  相关产品与服务
                  消息队列 CMQ 版
                  消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档