Docker安装RabbitMQ

2 篇文章 0 订阅
1 篇文章 0 订阅

RabbitMQ

Linux平台安装RabbitMQ

  • docker拉取rabbitmq镜像

    docker pull rabbitmq
    
  • 启动容器

    docker run -d --name rabbitmq2  -p 15672:15672 -p 5672:5672 c20a8529776b
    
  • 开放端口后无法访问,进入容器中执行下面命令

    docker exec -it rabbitmq /bin/bash
    rabbitmq-plugins enable rabbitmq_management
    

RabbitMQ集群安装

  • 启动多个容器

    docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' c20a8529776b
    
    docker run -d --hostname rabbit2 --name myrabbit2 -p 15673:15672 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' c20a8529776b
    
    docker run -d --hostname rabbit3 --name myrabbit3 -p 15674:15672 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' c20a8529776b
    
  • 通过命令使他们加入集群

    docker exec -it myrabbit1 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl start_app
    exit
     
    docker exec -it myrabbit2 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster  rabbit@rabbit1
    rabbitmqctl start_app
    exit
     
     
    docker exec -it myrabbit3 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster  rabbit@rabbit1
    rabbitmqctl start_app
    exit
    
  • 配置
    在这里插入图片描述

    • name:随意取
    • pattern: 队列名字的通配符
    • ha-mode:镜像队列提供了三种模式:
      • all:全部的节点队列都做镜像;
      • exactly:指定镜像队列的节点最高镜像数量;
      • nodes:只为指定具体节点配置镜像队列;
    • ha-sync-mode :节点之前的同步模式。有自动和手动两种,默认是手动,这里设置为自动。

RabbitMQ常用命令

用户管理

  • 添加用户

    #rabbitmqctl add_user zhang 123456
    rabbitmqctl add_user {username} {password}
    
  • 删除用户

    #rabbitmqctl delete_user zhang
    rabbitmqctl delete_user {username}
    
  • 重置密码

    #rabbitmqctl change_password zhang 111111
    rabbitmqctl change_password {username} {newpassword}
    
  • 设置用户角色

    • administrator(超级管理员):可查看所有信息,并可以对用户、策略进行操作。
    • monitoring(监控者):可以查看rabbitmq节点的相关信息。
    • policymaker(策略制定者):可以对策略进行管理,但是不可以查看节点相关信息。
    • management(普通管理者):无法查看节点信息,也无法对策略进行管理。
    #rabbitmqctl set_user_tags zhang administrator
    rabbitmqctl set_user_tags {username} {tag}
    
  • 设置用户可以访问的vhost

    #rabbitmqctl set_permissions -p / zhang '.*' '.*' '.*'
    rabbitmqctl set_permissions -p / {username} '.*' '.*' '.*'
    

基本概念

Producer:生产者,消息的提供者

Consumer:消费者,消息的使用者

Message:消息,程序间的通信数据

Queue:队列,消息存放的容器(先进先出)

Vhost:虚拟主机,相当于MQ中的数据库,用于存储队列

RabbitMQ六种工作模式

Hello World模式

img

工作中不会用到该模式,只是入门演示实例。

Work queues(工作队列模式)

img

  • 在多个消息的情况下,会将消息分派给不同的消费者,每个消费者都会接受不同的消息。可以根据消费者的性能进行权重配置。
  • 特别适合在集群环境中做异步处理,最大程度发挥每一台服务器的性能。

Publish/Subscribe(发布/订阅模式)

img

  • 生产者不再直接与队列绑定, 而是将数据发送至“交换机Exchange”。
  • 交换机Exchange用于将数据按某种规则送入与 之绑定的队列,进而供消费者使用。
  • 发布/订阅模式中,交换机将无差别的将所有消 息送入与之绑定的队列,所有消费者拿到的消息 完全相同,交换机的类型被称为fanout。

Routing(路由模式)

img

  • 路由(Routing)模式是在发布订阅模式 基础上的变种。
  • 路由模式则是交换机根据Routing Key有 条件的将数据筛选后发给消费者队列。
  • 路由模式下交换机的类型被称为direct。

Topics(主题模式)

img

  • 主题Topic模式是在Routing模式基础上, 提供了对RouteKey模糊匹配的功能,可以 简化程序的编写。
  • 主题模式下,模糊匹配表达式规则为 : * 匹配单个关键字 、#匹配所有关键字。
  • 主题模式下交换机的类型被称为topic。

RPC

img

工作中不会使用该模式。

消息确认机制

  • RabbitMQ提供了监听器(Listener)来接收消息投递的状态。
  • 消息确认涉及两种状态:Confirm与Return。
  • 下面两种状态只代表生产者与Broker之间消息投递的 情况。与消费者是否接收/确认消息无关。

Confirm

Confirm代表生产者将消息送到Broker时产生的状态,后续 会出现两种情况:

  • ack 代表Broker已经将数据接收。
  • nack 代表Broker拒收消息。原因有多种,队列已满,限流,IO异常…

Return

u Return代表消息被Broker正常接收(ack)后,但Broker没 有对应的队列进行投递时产生的状态,消息被退回给生产者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值