RabbitMQ

2019-10-12 Views

简介(天天向上卡索)

RabbitMQ——Rabbit Message Queue的简写,但不能仅仅理解其为消息队列,消息代理更合适。RabbitMQ 是一个由 Erlang 语言开发的AMQP(高级消息队列协议)的开源实现。
RabbitMQ作为一个消息代理,主要和消息打交道,负责接收并转发消息。
RabbitMQ提供了可靠的消息机制、跟踪机制和灵活的消息路由,支持消息集群和分布式部署。适用于排队算法、秒杀活动、消息分发、异步处理、数据同步、处理耗时任务、CQRS等应用场景

docker部署

  • Docker Hub地址
    # --hostname my-rabbit 指定主机名
    # -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password 设置默认的用户名/密码
    docker run -tid --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq
    

docker部署集群

  • 参考自彭东稳的博客

  • 单机版

    
    git clone https://github.com/bijukunjummen/docker-rabbitmq-cluster.git
    
    cd docker-rabbitmq-cluster/cluster  
    
    docker-compose up -d # 如果docker daemon和docker-compose没有安装,要先安装
    
    Pulling rabbit1 (bijukunjummen/rabbitmq-server:latest)...
    latest: Pulling from bijukunjummen/rabbitmq-server
    8d30e94188e7: Pull complete
    .
    .
    .
    Digest: 
    sha256:a6bbb268de87d09d538152450b77835a27693039ab079785a7b72f595bef18a6
    Status: Downloaded newer image for bijukunjummen/rabbitmq-server:latest
    Creating cluster_rabbit1_1
    Creating cluster_rabbit2_1
    Creating cluster_rabbit3_1
    
    • 查看容器,默认启动了3个节点
    docker ps  
    CONTAINER ID        IMAGE                           COMMAND                  
    CREATED             STATUS              PORTS                                                                                  
    NAMES
    ba5f665bb213        bijukunjummen/rabbitmq-server   "/bin/sh -c /opt/rabb"   
    10 minutes ago      Up 10 minutes       4369/tcp, 9100-9105/tcp, 15672/tcp, 
    25672/tcp, 0.0.0.0:5674->5672/tcp                  cluster_rabbit3_1
    b9466e206b2b        bijukunjummen/rabbitmq-server   "/bin/sh -c /opt/rabb"   
    10 minutes ago      Up 10 minutes       4369/tcp, 9100-9105/tcp, 25672/tcp, 
    0.0.0.0:5673->5672/tcp, 0.0.0.0:15673->15672/tcp   cluster_rabbit2_1
    b733201aeadf        bijukunjummen/rabbitmq-server   "/bin/sh -c /opt/rabb"   
    10 minutes ago 
    
    
  • 访问 http://ip:15672,输入guest/guest,进入rabbitmq界面
    4a15fb6efb38b76b1c6e4351332fd23.png

多机版

假设有三台服务器,IP分别为10.106.136.7,10.106.136.8,10.106.136.9

三台服务器上docker-compose配置文件分别为

  • rabbit1(10.106.136.7)
rabbit1:
  image: bijukunjummen/rabbitmq-server
  hostname: rabbit1
  ports:
    - "5672:5672"
    - "4369:4369"
    - "1883:1883"
    - "15672:15672"
    - "25672:25672"
  environment:
    - RABBITMQ_DEFAULT_USER=myuser
    - RABBITMQ_DEFAULT_PASS=mypass
  • rabbit2(10.106.136.8)
rabbit2:
  image: bijukunjummen/rabbitmq-server
  hostname: rabbit2
  extra_hosts:
    - "rabbit1:10.106.136.7" 
  environment: 
   - CLUSTERED=true
   - CLUSTER_WITH=rabbit1
   - RAM_NODE=true
  ports:
      - "5672:5672"
      - "4369:4369"
      - "1883:1883"
      - "15672:15672"
      - "25672:25672"
  • rabbit3(10.106.136.9)
rabbit3:
  image: bijukunjummen/rabbitmq-server
  hostname: rabbit3
  extra_hosts:
    - "rabbit1:10.106.136.7"
    - "rabbit2:10.106.136.8"
  environment: 
   - CLUSTERED=true
   - CLUSTER_WITH=rabbit1
   - RAM_NODE=true
  ports:
        - "5672:5672"
        - "4369:4369"
        - "1883:1883"
        - "15672:15672"
        - "25672:25672"
  • 依序在三个节点上分别开启rabbitmq,然后随意找个节点打开IP:15672,输入guest用户名和guest密码就可以查看集群了

△