zoukankan      html  css  js  c++  java
  • RabbitMQ

    一、Docker 安装RabbitMQ

     docker run -di --name hxrabbit -e RABBITNQ_DEFAULT_USER=admin -e  RABBITNQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management

    登陆可视化管理界面访问地址:http://192.168.0.81:15672

    2二、核心概念:

    Server:又称Broker,接受客户端的连接,实现AMQP实体服务。安装rabbitmq-server

    Connection:连接,应用程序与Broker的网络连接TCP/IP/三次握手和四次挥手

    Channel:网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道,客户端可以建立对各Channel,每个Channel代表一个会话任务

    Message:消息,服务与应用程序之间传送的数据,由Properties和body组成,Properties可是对消息进行修饰,比如消息的优先级,延迟等高级特性,Body则就是消息体的内容。

    Virtual Host:虚拟地址,用于进行逻辑隔离,最上层的消息路由,一个虚拟主机可以由若干个Exchange和Queue,同一个虚拟机里面不能有相同名字的Exchange

    Exchange:交换机,接受消息,根据路由键发送消息到绑定的队列。(==不具备消息存储的能力==)

    Bindings:Exchange和Queue之间的虚拟连接,binding中可以保护多个routingkey

    Routjing key:是一个路由规则,虚拟机可以用它来确定如何路由一个特定消息

    Queue:队列,也称为Message Queue,消息队列,保存消息并将它们转发给消费者

    三、RabbitMq的运行流程

     

     四、面试题分析

    1.Rabbitmq为什么需要信道,为什么不是TCP直接通信

      (1)tcp的创建和销毁开销大,创建需要三次握手,销毁需要4次分手

      (2)如果不用信道,那应用程序就会TCP连接到Rabbit服务器,高峰时每秒成千上万连接就会造成资源的巨大浪费,而且底层操作系统每秒处理tcp连接数也是有限的,必定造成性能瓶颈。

      (3)信道原理是一条线程一条信道,多条线程多条信道同用一个tcp连接,一条tcp连接可以容纳无线的信道,即便每秒成千上万的请求也不会成为性能瓶颈。

    2.queue队列到底在消费者创建还是生产者创建?

         (1)一般建议是在rabbitmq操作面板创建,这是一种稳妥的做法。

         (2)按照常理来说,确实应该消费者这边创建是最好,消息的消费是在这边,这样你承受一个后果,可能会丢失消息。

         (3)在生产者创建队列也是可以,这样稳妥的方法,消息是不会出现丢失。

         (4)如果你生产者和消费者都创建的队列,谁先启动谁先创建,后面启动就覆盖前面的。

  • 相关阅读:
    Beta 冲刺 (5/7)
    Beta 冲刺 (4/7)
    Beta 冲刺 (3/7)
    软件产品案例分析(团队)
    Beta 冲刺 (2/7)
    Beta 冲刺 (1/7)
    BETA 版冲刺前准备
    Alpha事后诸葛(团队)
    设计模式——访问者模式
    设计模式——命令模式
  • 原文地址:https://www.cnblogs.com/auldlangsynezh/p/15123045.html
Copyright © 2011-2022 走看看