美文网首页
rabbitmq简介及安装

rabbitmq简介及安装

作者: 拉格朗日123 | 来源:发表于2019-02-15 20:50 被阅读0次

    一.rabbitmq简介

    1.RabbitMQ介绍

    RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。

    消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的。在分布式的系统中,消息队列也会被用在很多其它的方面,比如:分布式事务的支持,RPC的调用等等。

    RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。

    AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

    RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。


    2.运行机制

    通常我们谈到队列服务, 会有三个概念: 发消息者、队列、收消息者,RabbitMQ 在这个基本概念之上, 多做了一层抽象, 在发消息者和 队列之间, 加入了交换器 (Exchange). 这样发消息者和队列就没有直接联系, 转而变成发消息者把消息给交换器, 交换器根据调度策略再把消息再给队列。

    左侧 P 代表 生产者,也就是往 RabbitMQ 发消息的程序。

    中间即是 RabbitMQ,其中包括了 交换机 和 队列。

    右侧 C 代表 消费者,也就是往 RabbitMQ 拿消息的程序

    那么,其中比较重要的概念有 4 个,分别为:虚拟主机,交换机,队列,和绑定。

    (1)虚拟主机:一个虚拟主机持有一组交换机、队列和绑定。为什么需要多个虚拟主机呢?很简单,RabbitMQ当中,用户只能在虚拟主机的粒度进行权限控制。因此,如果需要禁止A组访问B组的交换机/队列/绑定,必须为A和B分别创建一个虚拟主机。每一个RabbitMQ服务器都有一个默认的虚拟主机“/”。

    (2)交换机:Exchange 用于转发消息,但是它不会做存储,如果没有 Queue bind 到 Exchange 的话,它会直接丢弃掉 Producer 发送过来的消息。  这里有一个比较重要的概念:路由键(routing_key)。消息到交换机的时候,交互机会转发到对应的队列中,那么究竟转发到哪个(3)队列,就要根据该路由键。

    (4)绑定:也就是交换机需要和队列相绑定,这其中如上图所示,是多对多的关系。


    交换机的重要功能

    交换机的功能主要是接收消息并且转发到绑定的队列,交换机不存储消息,在启用ack模式后,交换机找不到队列会返回错误。交换机有四种类型:Direct, topic, Headers and Fanout

    Direct:direct 类型的行为是”先匹配, 再投送”. 即在绑定时设定一个routing_key, 消息的routing_key匹配时, 才会被交换器投送到绑定的队列中去.

    Topic:按规则转发消息(最灵活)

    Headers:设置header attribute参数类型的交换机

    Fanout:转发消息到所有绑定队列(广播:忽略routing_key )


    3.总结

    RabbitMQ简单来说,就是生产者发送消息到虚拟主机,虚拟主机把消息交给指定的交换机,交换机按照规则扔给消息队列进行存储,消息队列等待消费者来消费。

    由此我想到了商品买卖:厂家生产商品卖给批发部,批发部交给指定的超市出售,超市按照售价摆放在门店,并等待顾客上门购买。


    二.rabbitmq在linux上的安装

    因为RabbitMQ是由erlang语言写的,就像Java程序需要jdk环境一样,运行RabbitMQ也需要erlang环境。


    1.安装erlang

    环境:Centos7.4

    下载地址:http://erlang.org/download/

    在Linux终端运行命令行

    下载:

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

    下载一定要认准otp_src_字样。

    解压:

    tar-zxvf otp_src_18.3.tar.gz

    进入解压后的根目录:

    ./configure--prefix=/usr/local/erlang--enable-hipe--enable-threads--enable-smp-support--enable-kernel-poll--without-javac

    make&&make install

    上面有点慢。

    把erlang加入环境变量:

    vi/etc/profile

    exportERLANG=/usr/local/erlang/erlangexportPATH=$ERLANG/bin:$PATH

    使环境变量生效

    source/etc/profile

    然后,我们测试下是否安装成功:

    [root@yueshutong~]# erlErlang/OTP18[erts-7.3][source][64-bit][async-threads:10][hipe][kernel-poll:false]Eshell V7.3(abortwith^G)1>


    2.安装RabbitMQ

    下载地址:http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/

    下载:

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

    对于下载xz包进行解压,首先先下载xz压缩工具:

    yum install xz

    对rabbitmq包进行解压:

    xz-d xz-d rabbitmq-server-generic-unix-3.6.1.tar.xz

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

    随后在sbin目录启用MQ管理方式:

    ./rabbitmq-plugins enable rabbitmq_management  #启动后台管理

    ./rabbitmq-server-detached #后台运行rabbitmq

    添加用户和权限 默认网页guest用户是不允许访问的,需要增加一个用户修改一下权限,代码如下:

    添加用户:

    ./rabbitmqctl add_user admin admin

    添加权限:

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

    修改用户角色:

    ./rabbitmqctl set_user_tags admin administrator

    然后就可以远程访问了,然后可直接配置用户权限等信息。


    3.验证

    访问http://ip:15672/,输入admin用户密码,登录成功!

    相关文章

      网友评论

          本文标题:rabbitmq简介及安装

          本文链接:https://www.haomeiwen.com/subject/hczmeqtx.html