消息队列 - mac上安装RabbitMq (转)

什么是RabbitMQ?

  RabbitMQ是由Erlang语言编写的实现了高级消息队列协议(AMQP)的开源消息代理软件(也称为面向消息的中间件)。支持WIndows、Linux、MAC OS 操做系统和包括java、.net在内的多种编程语言。html

 

AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,分面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受 客户端/中间件 不一样产品,不一样的开发语言等条件的限制。java

 

RabbitMQ中的重要概念

  Broker:经纪人。提供一种传输服务,维护一条从生产者到消费者的传输线路,保证消息数据能按照指定的方式传输。粗鲁哦的能够将图中的RabbitMQ Server当作Broker。git

  Exchange:消息交换机。指定消息按照什么规则路由到哪一个队列Queue。github

  Queue:消息队列。消息的载体,每条消息都会被投送到一个或多个队列中。编程

  Binding:绑定。做用就是将Exchange和Queue按照某种路由规则绑定起来。ruby

  RoutingKey:路由关键字。Exchange根据RoutingKey进行消息传递。bash

  Vhost:虚拟主机。一个Broker能够有多个虚拟主机,用做不一样用户的权限分离。一个虚拟主机持有一组Exchange、Queue和Bingding。服务器

  Producer:消息生产者。主要将消息投递到对应的Exchange上面。通常是独立的程序。app

  Consumer:消息消费者。消息的接收者,通常是独立的程序。负载均衡

  Channel:消息通道,也称信道。在客户端的每一个链接里能够创建多个Channel,每一个Channel表明一个会话任务。

 

RabbitMQ使用流程

  AMQP模型中,消息在producer中产生,发送到MQ的exchange上,exchange根据配置的路由方式投递到相应的Queue上,Queue又将消息发送给已经在此Queue上注册的consumer,消息从queue到consumer有push和pull两种方式。

  1.客户端链接到消息队列服务器,打开一个channel。

  2.客户端声明一个exchange,并设置相关属性。

  3.客户端声明一个queue,并设置相关属性。

  4.客户端使用routing key,在exchange和queue质检创建好binding关系。

  5.生产者客户端投递消息到exchange。

  6.exchange接收到消息后,就根据消息的RoutingKey和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。

  7.消费者客户端从对应的队列中获取并处理消息。

 

RabbitMQ的优缺点:

  优势:

    1.由Erlang语言开发,支持大量协议:AMQP、XMPP、SMTP、STOMP。

    2.支持消息的持久化,负载均衡和集群,且集群易扩展。

    3.具备一个Web监控界面,易于管理。

    4.安装部署简单,上手容易,功能丰富,强大的社区支持。

    5.支持消息确认机制、灵活的消息分发机制。

  缺点:

    1.因为牺牲了部分性能来换取稳定性,好比消息的持久化功能,使得RabbitMQ在大吞吐量性能方面不及Kafka和ZeroMQ。

    2.因为支持多种协议,使RabbitMq很是重量级,比较适合企业级开发。

 

所以,当须要一个稳定的、高可考性的、功能强大易于管理的消息队列能够选择RabbitMQ。若是对消息吞吐量需求较大,切不在意消息偶尔丢失的状况可使用Kafka。

 

安装RabbitMQ

官方地址:http://www.rabbitmq.com/install-standalone-mac.html#install-homebrew

首先 安装 homebrew 

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

而后使用brew命令安装便可

brew install rabbitmq

安装目录:/usr/local/cellar/rabbitmq/3.7.5

 

配置命令访问路径

  • cd ~
  • vi .bash_profile(前提是存在该文件,若是不存在,能够先建立mkdir .bash_profile,以后再执行vi编辑)
  • 输入如下两行
    • export RABBIT_HOME=/Users/enniu1/Desktop/zjg/rabbitmq_server-3.6.1
    • export PATH=$PATH:$RABBIT_HOME/sbin
    • source .bash_profile

启动RabbitMQ

进入到安装目录 /usr/local/cellar/rabbitmq/3.7.5 执行

sbin/rabbitmq-server

 

启动插件

  启动完毕以后,另起一个终端 进入/usr/local/cellar/rabbitmq/3.7.5/sbin

./rabbitmq-plugins enable rabbitmq_management(执行一次之后不用再次执行)

 

登录管理界面

http://localhost:15672/

帐号密码都是guest

 

 

rabbitMQ经常使用命令

启动监控管理器:rabbitmq-plugins enable rabbitmq_management

关闭监控管理器:rabbitmq-plugins disable rabbitmq_management

启动rabbitmq:rabbitmq-service start

关闭rabbitmq:rabbitmq-service stop

查看全部的队列:rabbitmqctl list_queues

清除全部的队列:rabbitmqctl reset

清除具体的某个队列:rabbitmqctl purge_queue queue_name

关闭应用:rabbitmqctl stop_app

启动应用:rabbitmqctl start_app

 

用户和权限设置

添加用户:rabbitmqctl add_user username password

分配角色:rabbitmqctl set_user_tags username administrator

新增虚拟主机:rabbitmqctl add_vhost vhost_name

将新虚拟主机受权给新用户:rabbitmqctl set_permissions -p vhost_name username '.*' '.*' '.*'

 

角色说明

none 最小权限角色

management 管理员角色

policymaker 决策者

monitoring 监控

administrator 超级管理员

相关文章
相关标签/搜索