RabbitMQ简介及安装

RabbitMQ简介

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。

RabbitMQ——Rabbit Message Queue的简写,但不能仅仅理解其为消息队列,消息代理更合适。RabbitMQ 是一个由 Erlang 语言开发的AMQP(高级消息队列协议)的开源实现。

RabbitMQ作为一个消息代理,主要和消息打交道,负责接收并转发消息。

RabbitMQ提供了可靠的消息机制、跟踪机制和灵活的消息路由,支持消息集群和分布式部署。适用于排队算法、秒杀活动、消息分发、异步处理、数据同步、处理耗时任务、CQRS等应用场景

MQ使用场景

  1. 异步处理

    不用MQ时可能的处理流程:

     
    common

    使用MQ处理:

     
    mq
  1. 流量削峰

     
    decrease top
  1. 应用解耦

     
    cross_system_mq
  1. 日志处理

     
    log_mq

Install on Windows

  1. 安装 Erlang 环境

    RabbitMQ 是 Erlang 语言写的,首先我们需要安装Erlang 环境

    下载地址:

  2. 安装 RabbitMQ Server

    下载地址:

  3. 启用Web管理插件

    RabbitMQ 安装后会自动在安装并启动服务,RabbitMQ 自带一个Web管理界面,需要手动启用

    打开 RabbitMQ 安装目录,在 sbin 目录下执行命令:

    • cmd

      rabbitmq-plugins.bat enable rabbitmq_management

    • powershell

      .\rabbitmq-plugins.bat enable rabbitmq_management

    在浏览器访问 http://localhost:15672 ,登录 Web 管理界面

    默认用户名/密码: guest/guest

Get Started

  1. RabbitMQ 核心概念

    1. Publisher:生产者,消息的发送方。
    2. Connection:网络连接。
    3. Channel:信道,多路复用连接中的一条独立的双向数据流通道。
    4. Exchange:交换器(路由器),负责消息的路由到相应队列。
    5. Binding:队列与交换器间的关联绑定。消费者将关注的队列绑定到指定交换器上,以便Exchange能准确分发消息到指定队列。
    6. Queue:队列,消息的缓冲存储区。
    7. Virtual Host:虚拟主机,虚拟主机提供资源的逻辑分组和分离。包含连接,交换,队列,绑定,用户权限,策略等。
    8. Broker:消息队列的服务器实体。
    9. Consumer:消费者,消息的接收方。
  2. RabbitMQ 消息模型

    1. RabbitMQ 消息结构

       
      应用场景架构图:
      从示意图可以看出消息生产者并没有直接将消息发送给消息队列,而是通过建立与Exchange的Channel,将消息发送给Exchange,Exchange根据规则,将消息转发给指定的消息队列。消费者通过建立与消息队列相连的Channel,从消息队列中获取消息。
    2. 无Exchange单Consumer

       
      RabbitMQ single consumer
    3. 无Exchange多Consumer

       
      RabbitMQ single consumer
    4. Exchange多Consumer

       
      RabbitMQ single consumer
    5. 公平分发

       
      RabbitMQ avarage distribution
    6. RPC

       
      RabbitMQ RPC
  3. RabbitMQ 常用ExchangeType介绍

    1. direct(明确的路由规则:消费端绑定的队列名称必须和消息发布时指定的路由名称一致)

       
      direct exchangeType
    2. fanout(消息广播,将消息分发到exchange上绑定的所有队列上)

      fanout的路由机制如下图,即发送到 fanout 类型 exchange 的消息都会分发到所有绑定该 exchange 的队列上去。

       
      fanout exchangeType
    3. topic(模式匹配的路由规则:支持通配符)

      topicdirect 的升级版,是一种模式匹配的路由机制。它支持使用两种通配符来进行模式匹配:符号#和符号*。其中*匹配一个单词, #则表示匹配0个或多个单词,单词之间用.分割。如下图所示。

       
      topic exchangeType

Linux系统安装

环境:Centos6.5

yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl

wget http://www.erlang.org/download/otp_src_18.3.tar.gz

tar -xzvf otp_src_18.3.tar.gz 

cd otp_src_18.3/

mkdir /usr/local/erlang

./configure --prefix=/usr/local/erlang

make && make install

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/rabbitmq-server-generic-unix-3.6.1.tar.xz --no-check-certificate
xz -d rabbitmq-server-generic-unix-3.6.1.tar.xz

tar -xvf rabbitmq-server-generic-unix-3.6.1.tar

mv rabbitmq_server-3.6.1/ /usr/local/rabbitmq_server

vim /etc/profile 

ERL_HOME=/usr/local/erlang/
PATH=$ERL_HOME/bin:$PATH:/usr/local/rabbitmq_server/sbin
export ERL_HOME PATH

source /etc/profile

rabbitmq-server -detached 

ps -ef |grep rabbit

rabbitmqctl status

mkdir /etc/rabbitmq

rabbitmq-plugins enable rabbitmq_management

rabbitmq-plugins enable rabbitmq_stomp

rabbitmqctl add_user root 123456

rabbitmqctl set_permissions -p / root ".*" ".*" ".*"

rabbitmqctl set_user_tags root administrator

getenforce

setenforce 0

service iptables status

service iptables stop

rabbitmqctl  list_users

 

 

参考:

https://www.jianshu.com/p/542e371c7f77

https://www.cnblogs.com/duanxz/p/3542320.html#top

https://www.jianshu.com/p/5c2d8af2c78e


posted on 2019-06-19 12:45  BillyLV  阅读(147)  评论(0)    收藏  举报

导航