首页 > 系统服务 > 详细

Linux----------Rabbitmq消息队列

时间:2020-04-12 14:33:15      阅读:64      评论:0      收藏:0      [点我收藏+]

转载 https://www.cnblogs.com/williamjie/p/9481774.html

一、rabbitmq简介

1.1 MQ介绍

  • 什么是MQ
    消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。
    其主要用途:不同进程Process/线程Thread之间通信。

为什么会产生消息队列?有几个原因:

  • 1.不同进程(process)之间传递消息时,两个进程之间耦合程度过高,改动一个进程,引发必须修改另一个进程,为了隔离这两个进程,在两进程间抽离出一层(一个模块),所有两进程之间传递的消息,都必须通过消息队列来传递,单独修改某一个进程,不会影响另一个;
  • 2.不同进程(process)之间传递消息时,为了实现标准化,将消息的格式规范化了,并且,某一个进程接受的消息太多,一下子无法处理完,并且也有先后顺序,必须对收到的消息进行排队,因此诞生了事实上的消息队列;

MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka,以及阿里开源的RocketMQ。本文主要介绍RabbitMq

1.2 RabbitMQ简介

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
下面将重点介绍RabbitMQ中的一些基础概念,了解了这些概念,是使用好RabbitMQ的基础。
技术分享图片
技术分享图片

1.3 rabbitmq实现原理

技术分享图片

二、命令参数和配置文件

Rabbitmq服务器的主要通过rabbitmqctl和rabbimq-plugins两个工具来管理,以下是一些常用功能。

1). 服务器启动与关闭

  启动: rabbitmq-server –detached 或 service start rabbitmq

  关闭:rabbitmqctl stop           或 service stop rabbitmq

  若单机有多个实例,则在rabbitmqctlh后加–n 指定名称

2). 插件管理

  开启某个插件:rabbitmq-pluginsenable xxx

  关闭某个插件:rabbitmq-pluginsdisablexxx

  注意:重启服务器后生效。

3).virtual_host管理

  新建virtual_host: rabbitmqctladd_vhost  xxx

  撤销virtual_host:rabbitmqctl  delete_vhost xxx

4). 用户管理

  新建用户:rabbitmqctl add_user xxx pwd

  删除用户:   rabbitmqctl delete_user xxx

  改密码: rabbimqctl change_password {username} {newpassword}

  设置用户角色:rabbitmqctl set_user_tags {username} {tag ...}

          Tag可以为 administrator,monitoring, management

5). 权限管理

  权限设置:set_permissions [-pvhostpath] {user} {conf} {write} {read}

           Vhostpath

           Vhost路径

           user

 用户名

          Conf

  一个正则表达式match哪些配置资源能够被该用户访问。

          Write

  一个正则表达式match哪些配置资源能够被该用户读。

           Read

  一个正则表达式match哪些配置资源能够被该用户访问。

6). 获取服务器状态信息

   服务器状态:rabbitmqctl status

   队列信息:rabbitmqctl list_queues[-p vhostpath] [queueinfoitem ...]

            Queueinfoitem可以为:name,durable,auto_delete,arguments,messages_ready,

            messages_unacknowledged,messages,consumers,memory

   Exchange信息:rabbitmqctllist_exchanges[-p vhostpath] [exchangeinfoitem ...]

             Exchangeinfoitem有:name,type,durable,auto_delete,internal,arguments.

   Binding信息:rabbitmqctllist_bindings[-p vhostpath] [bindinginfoitem ...]       

             Bindinginfoitem有:source_name,source_kind,destination_name,destination_kind,routing_key,arguments

   Connection信息:rabbitmqctllist_connections [connectioninfoitem ...]

   Connectioninfoitem有:recv_oct,recv_cnt,send_oct,send_cnt,send_pend等。

   Channel信息:rabbitmqctl  list_channels[channelinfoitem ...]

  Channelinfoitem有consumer_count,messages_unacknowledged,messages_uncommitted,acks_uncommitted,messages_unconfirmed,prefetch_count,client_flow_blocked

三、简单安装和使用

注意:erlang和mq的版本,mq版本为3.6,erlang版本不能超过19

3.1 YUM安装

#yum安装
#安装依赖
yum install ncurses ncurses-base ncurses-devel ncurses-libs ncurses-static ncurses-term ocaml-curses ocaml-curses-devel openssl-devel zlib-devel make ncurses-devel gcc gcc-c++ unixODBC unixODBC-devel openssl openssl-devel -y
rz rabbitmq-server-3.6.6-1.el7.noarch.rpm
yum install -y erlang 
yum localinstall rabbitmq-server-3.6.6-1.el7.noarch.rpm
yum install socat(可能自动安装)

#查看版本
erl -v

#启动服务
systemctl start rabbitmq.server.service

#查看状态
rabbitmqctl status

#启动web管理插件
rabbitmq-plugins enable rabbitmq_management

#如果提示找不到,使用查看插件名称
rabbitmq-plugins list
 
#增加访问用户,默认用户guest只能本地访问。
rabbitmqctl add_user admin passwd(123456)
 
#设置超级管理员:
rabbitmqctl set_user_tags admin administrator
 
设置默认vhost("/")访问权限
rabbitmqctl set_permissions -p "/" admin "." "." ".*"
 
#浏览器访问:http://IP:15672
用户名admin,密码123456进行登录
 
#最好登录console的时候,删除默认账户guest

#开放安全组或防火墙15672端口
#访问ip:15672,默认账户密码15672(上面)
Config file        /etc/rabbitmq/rabbitmq.config
Database directory /var/lib/rabbitmq/mnesia/rabbit@docker-004
Log file           /var/log/rabbitmq/rabbit@docker-004.log
SASL log file      /var/log/rabbitmq/rabbit@docker-004-sasl.log 

3.2 常用命令

#添加用户
rabbitmqctl add_user rabbit rabbit

#授于超级管理员权限
rabbitmqctl set_user_tags rabbit administrator

#特定账号设置权限
rabbitmqctlset_permissions -p / rabbit  ‘.*‘  ‘.*‘  ‘.*‘

#查看权限
rabbitmqctl list_user_permissions rabbit
rabbitmqctl list_permissions -p /

#清除权限
rabbitmqctl clean_permissions rabbit

集群安装调整
注意调整hosts文件

注意调整主目录的cookie文件及权限.erlang.cookie
rabbitmq-server -detached
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@test-redis3
rabbitmqctl start_app

查看集群状态
rabbitmqctl cluster_status

Linux----------Rabbitmq消息队列

原文:https://www.cnblogs.com/wangchengshi/p/12685112.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!