• RabbitMQ 简介和安装


    一、介绍

    官网:http://www.rabbitmq.com/

    RabbitMQ 是⼀个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如: PythonRuby.NETJavaC、用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不错。

    SpringAMQP完美的整合、 API丰富易用文档: https://www.rabbitmq.com/getstarted.html

    二、核心概念

    了解了这些概念,是使用好RabbitMQ的基础

    • Broker
      • RabbitMQ的服务端程序,可以认为⼀个mq节点就是⼀个broker
    • Producer生产者
      • 创建消息Message,然后发布到RabbitMQ
    • Consumer消费者:
      • 消费队列里面的消息
    • Message 消息
      • 生产消费的内容,有消息头和消息体,也包括多个属性配置,比如routingKey路由键
    • Queue 队列
      • RabbitMQ的内部对象,用于存储消息,消息都只能存储在队列中
    • Channel 信道
      • ⼀条支持多路复用的通道,独立的双向数据流通道,可以发布、订阅、接收消息。
      • 信道是建立在真实的TCP连接内的虚拟连接,复用TCP连接的通道
    • Connection连接
      • RabbitMQsocket链接,它封装了socket协议相关部分逻辑,⼀个连接上可以有多个channel进行通
    • Exchange 交换器
      • 生产者将消息发送到 Exchange,交换器将消息路由到⼀个或者多个队列中,里面有多个类型,后续再⼀⼀介绍,队列和交换机是多对多的关系。
    • RoutingKey 路由键
      • 生产者将消息发给交换器的时候,⼀般会指定⼀个RoutingKey,用来指定这个消息的路由规则最大长度255 字节
    • Binding 绑定
      • 通过绑定将交换器与队列关联起来,在绑定的时候⼀般会指定⼀个绑定键(BindingKey),这样RabbitMQ 就知道如何正确地将消息路由到队列了
      • 生产者将消息发送给交换器时,需要⼀个RoutingKey,当BindingKeyRoutingKey相匹配时,消息会被路由到对应的队列中
    • Virtual host 虚拟主机
      • 生产者将消息发送给交换器时,需要⼀个RoutingKey,当BindingKeyRoutingKey相匹配时,消息会被路由到对应的队列中
      • 用于不同业务模块的逻辑隔离,⼀个Virtual Host面可以有若干个ExchangeQueue,同⼀个VirtualHost 里面不能有相同名称的ExchangeQueue
      • 默认是 /

    三、Docker安装RabbitMQ

    地址:https://hub.docker.com/_/rabbitmq?tab=description

    #拉取镜像
    docker pull rabbitmq:management
    ​
    docker run -d --hostname rabbit_host1 --name xd_rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 -p 5672:5672 rabbitmq:management
    ​
    #介绍
    -d 以守护进程方式在后台运行
    -p 15672:15672 management 界面管理访问端口
    -p 5672:5672 amqp 访问端口
    --name:指定容器名
    --hostname:设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts,作为容器主机IP的别名,并且将显示在容器的bash中
    ​
    -e 参数
      RABBITMQ_DEFAULT_USER 用户名
      RABBITMQ_DEFAULT_PASS 密码

    主要端口介绍

    4369 erlang 发现端口
    5672 client 通信端口
    15672 管理界面 ui 端口
    25672 server 内部间通信端口

    访问管理界面:ip:15672

    注意事项:

    • Linux服务器检查防火墙是否关闭
    • 云服务器检查网络安全组是否开放端口
    CentOS 7 以上默认使用的是firewall作为防火墙
    查看防火墙状态
    firewall-cmd --state
    
    停止firewall systemctl stop firewalld.service
    禁止firewall开机启动 systemctl disable firewalld.service

    四、控制台介绍

    管控台介绍

    • 默认rabbitmq账号密码 guest/guest
    • 这里我启动docker容器时修改为admin/password

    • 每个虚拟主机默认就有7个交换机

  • 相关阅读:
    增加Tomcat内存大小
    JAVA中的JSON
    js判断中文字符长度
    2016总结
    JavaScript 字符串实用常用操作
    Java文件操作
    hadoop中hbase出现的问题
    static_cast静态类型转换指针导致Release程序随机崩溃报错
    解决: error C2236: 意外的标记“class”。是否忘记了“;”?
    游戏操作杆代码
  • 原文地址:https://www.cnblogs.com/jwen1994/p/14357404.html
Copyright © 2020-2023  润新知