深入剖析 rabbitMQ( 二 )

  • Fanout:广播类型,将消息转发到所有与该交互机绑定的队列上,不关心 routing_key;
  • 2.2.1、DirectDirect 是 RabbitMQ 默认的交换机模式,也是最简单的模式,消息中的路由键(routing key)如果和 Binding 中的 binding key 一致,交换器就将消息发到对应的队列中 。
    如果传入的 routing key 为 black,不会转发到black.green 。Direct 类型交换器是完全匹配、单播的模式 。
    深入剖析 rabbitMQ

    文章插图
     
    2.2.2、TopicTopic 类型交换器转发消息和 Direct 一样,不同的是:它支持通配符转发,相比 Direct 类型更加灵活!
    两种通配符:*只能匹配一个单词,#可以匹配零个或多个 。
    如果传入的 routing key 为 black#,不仅会转发到black,也会转发到black.green 。
    深入剖析 rabbitMQ

    文章插图
     
    2.2.3、Headersheaders 也是根据规则匹配, 相比 direct 和 topic 固定地使用 routing_key , headers 则是通过一个自定义匹配规则的消息头部类进行匹配 。
    在队列与交换器绑定时,会设定一组键值对规则,消息中也包括一组键值对( headers 属性),当这些键值对有一对, 或全部匹配时,消息被投送到对应队列 。
    此外 headers 交换器和 direct 交换器完全一致,但性能差很多,目前几乎用不到了 。
    深入剖析 rabbitMQ

    文章插图
     
    2.2.4、FanoutFanout 类型交换器与上面几个不同,不管路由键或者是路由模式,会把消息发给绑定给它的全部队列,如果配置了 routing_key 会被忽略,也被成为消息广播模式 。很像子网广播,每台子网内的主机都获得了一份复制的消息
    fanout 类型转发消息在四种类型中是最快的 。
    深入剖析 rabbitMQ

    文章插图
     
    三、RabbitMQ 安装RabbitMQ 基于 erlang 进行通信,相比其它的软件,安装有些麻烦,为了跟生产环境保持一直,操作系统选择centos7,不过本例采用rpm方式安装,任何新手都可以完成安装,过程如下!
    3.1、安装前命令准备输入如下命令,完成安装前的环境准备 。
    yum install lsof  build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz wget vim3.2、下载 RabbitMQ、erlang、socat 的安装包本次下载的是RabbitMQ-3.6.5版本,采用rpm一键安装,适合新手直接上手 。
    先创建一个rabbitmq目录,本例的目录路径为/usr/App/rabbitmq,然后在目录下执行如下命令,下载安装包!
    • 下载erlang
    wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
    • 下载socat
    wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
    • 下载rabbitMQ
    wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm最终目录文件如下:
    深入剖析 rabbitMQ

    文章插图
     
    3.3、安装软件包【深入剖析 rabbitMQ】下载完之后,按顺序依次安装软件包,这个很重要哦~
    • 安装erlang
    rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
    • 安装socat
    rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm
    • 安装rabbitmq
    rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm安装完成之后,修改rabbitmq的配置,默认配置文件在
    /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin目录下 。
    vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app修改loopback_users节点的值!
    深入剖析 rabbitMQ

    文章插图
     
    最后只需通过如下命令,启动服务即可!
    rabbitmq-server start &运行脚本之后,如果报错,例如下图!
    深入剖析 rabbitMQ

    文章插图
     
    解决办法如下:
    vim /etc/rabbitmq/rabbitmq-env.conf在文件里添加一行,如下配置!
    NODENAME=rabbit@localhost然后,再保存!再次以下命令启动服务!
    rabbitmq-server start &通过如下命令,查询服务是否启动成功!
    lsof -i:5672


    推荐阅读