• RabbitMQ消息中间件(第二章)第一部分-笔记


    本章导航

    • 互联网大厂为什么选择RabbitMQ?
    • RabbitMQ的高性能之道是如何做到?
    • 什么是AMQP高级协议?
    • AMQP核心概念是什么?
    • RabbitMQ整体架构模型是什么样子的?
    • RabbitMQ消息是如何流转的?
    • RabbitMQ安装与使用
    • 命令行与管控台
    • RabbitMQ消息生产与消费
    • RabbitMQ交换机详解
    • RabbitMQ队列、绑定、虚拟主机、消息

    初识RabbitMQ

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

     哪些大厂在使用RabbitMQ,为什么

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

    RabbitMQ高性能的原因

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

    什么是AMQP高级消息队列协议?

    • AMQP定义:是具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设

    AMQP核心概念

    • Server:又称Broker,接收客户端的连接,实现AMQP实体服务
    • Connection:连接,应用程序与Broker的网络连接
    • Channel:网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道。客户端可建立多个Channel,每个Channel代表一个会话任务。(相当于连接MySQL,先获取Connection连接,然后在获取Session,这里Session就相当于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,消息队列,保存消息并将它们转发给消费者

    RabbitMQ的整体架构是什么样子的?

    RabbitMQ消息是如何流转的?

    •  一个Exchange可以绑定多个Queue
    • Exchange通过制定Routing key路由到Queue
    • 发送消息的时候,要带上消息的key(Routing key),通过Exchange和Queue建立绑定关系,路由到指定Queue,而接收端只需要监听指定Queue获取消息即可

     RabbitMQ安装与使用

    • 这里安装命令教程我写在这篇文章上 https://www.cnblogs.com/huihui-hui/p/14250774.html
    • 卸载教程 https://www.cnblogs.com/huihui-hui/p/14250763.html

    命令行与管控台-基础操作

    #查看rabbitmq启动了没
    lsof -i:5672
    #服务的启动 rabbitmq
    -server start & #服务的停止 rabbitmqctl stop #管理插件 rabbitmq-plugins enable rabbitmq_management #访问地址 http://127.0.0.1:15672/ #关闭应用
    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 stop_app之后使用
    rabbitmqctl reset
    #组成集群命令
    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 ...]
     

    管控台界面

     

  • 相关阅读:
    AtCoder Regular Contest 093
    AtCoder Regular Contest 094
    G. Gangsters in Central City
    HGOI 20190711 题解
    HGOI20190710 题解
    HGOI 20190709 题解
    HGOI 20190708 题解
    HGOI20190707 题解
    HGOI20190706 题解
    HGOI 20190705 题解
  • 原文地址:https://www.cnblogs.com/huihui-hui/p/14125355.html
Copyright © 2020-2023  润新知