zoukankan      html  css  js  c++  java
  • java架构之路-(MQ专题)RabbitMQ安装和基本使用

    RabbitMQ安装

      我这里安装是使用阿里云的CentOS7.5来安装的,使用CentOS版本低于7的可能会报错。

    1.安装rabbitmq所需要的依赖包

    输入$ yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc- c++ kernel-devel m4 ncurses-devel tk tc xz

     2.下载安装包 

    $ wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm

    $ wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm

    $ wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm

     

     3.安装服务命令 

    #第一步:安装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

      

    4.修改配置文件

    #第一步:查找rabbit.app,并编辑改文件

     修改:loopback_users 中的 <<"guest">>,只保留guest(不修改只能通过localhost访问) 

     #第二步,修改rabbitmq-env.conf文件

    vim /etc/rabbitmq/rabbitmq-env.conf 

    添加NODENAME=rabbit 

    5.安装插件,保证浏览器可以访问

    rabbitmq-plugins enable rabbitmq_management 

    6.启动服务

    rabbitmq-server start &

    rabbitmqctl start_app

     打开浏览器,输入我们的地址加端口15672,就可以看到我们的页面了,账号密码都是guest,登录进来是这样的。

     

      说了这么多,还没说这个玩意是做什么的呢~!我第一次接触这个我也懵,完全不懂得是做什么的,我们先来看一下他能做什么吧。

      RabbitMQ(暂不说实际场景,后面说场景,现在说场景怕自己给自己说懵圈了)主要是传递消息,就是什么意思呢,看个图。

      简单来说就是这样的,通过我们的RabbitMQ将我们的数据发送到其它的服务器上去,让服务器得到我们的消息,有人会问为什么不直接传递,也可以直接传递,但是服务器达到一定数量,你是维护起来成本很高的,而且还需要可靠性的投递呢?代码实现起来是复杂的。

      我们再来打开黑色的盒子看一下里面的东西。

    我们来说几个名词,有图了更容易理解和记忆

    1:server :又称为broker,接受客户端连接,实现amqp实体服务

    2:exchange 交换机: 消息直接投递到交换机上,然后交换机根据消息的路由key 来路由到对应绑定的队列上

    3:baingding: 绑定 exchange 与queue的虚拟连接,bingding中可以包含route_key

    4:route_key 路由key ,他的作用是在交换机上通过route_key来把消息路由到哪个队列上

    5:queue:队列,用于来保存消息的载体,有消费者监听,然后消费消息 

      就是我们的数据服务A通过网络通道,到达exchange交换机,通过路由route_key来把消息发送到哪个队列上,提供给我们的下游服务使用,左面的叫上游服务,右面的叫下游服务。

    交换机exchange

      这里还得继续说点枯燥的理论,交换机分为三种,直接交换机,扇形交换机和我们的Topic交换机,也叫做话题交换机。来举三个栗子。

    直接交换机:

    就是说,携带我们的routing Key通过我们的路由匹配到我们的routing Key就能到达我们的的Queue队列下,接收到我们发送过来的消息。

    扇形交换机

       通过我们的交换机,只要订阅了我们的交换机Exchange,就可以收到我们的消息。

    Topic交换机

      需要匹配我们的routing Key,这里的匹配模式有两种,*和#,*表示值匹配一层,一层就是..之间就叫做一层,比如啊,top.xiaocai.java,这时我们匹配top.xiaocai.*即可匹配到,而我们匹配top.*则不可匹配。再就是我们的#是全匹配,还是top.xiaocai.java的例子,这时我们匹配top.xiaocai.#即可匹配到,而我们匹配top.#也可匹配到。我们来看一个图

     就是一个匹配的规则,其实不难的。

     命令行

       我们再来看几个命令行的使用

    查看用户列表rabbitmqctl list_users,即可得到我们的用户列表了,前面是用户名,括号内的是用户对应的角色。

     输入rabbitmqctl add_user xiaocaijava 123456,添加我们的新用户,前面xiaocaijava是用户名,123456是密码。

     设置rabbitmq用户的角色 rabbitmqctl set_user_tags xiaocaijava administrator 

     

     输入rabbitmqctl delete_user xiaocaijava,即可删除我们的用户,注意别把guest用户删了,不然会很麻烦。

     后面的我就大概说一下,不是很重要,会用即可。

    为用户设置权限: rabbitmqctl set_permissions -p <虚拟机> <用户名> ".*" ".*" ".*" 

    列出用户权限: rabbitmqctl list_user_permissions xiaocai

    清除用户权限 rabbitmqctl clear_permissions -p <虚拟机> <用户名> 

    修改用户密码 rabbitmqctl change_password 用户名 新密码 

    虚拟主机操作

    rabbitmqctl add_vhost /cloudmall 增加一个虚拟主机

    rabbitmqctl list_vhosts; 查看所有的虚拟主机

    rabbitmqctl list_permissions -p /cloudmall查看虚拟主机的权限

    rabbitmqctl delete_vhost /cloudmall 删除虚拟主机 

    操作队列命令

    rabbitmqctl list_queues 查询所有队列

    rabbitmqctl -p vhostpath purge_queue blue 清除队列消息 

      今天只是简单了解一下我们的RabbitMQ,后面会详细的去说RabbitMQ的作用和java相关的使用。

     

    最进弄了一个公众号,小菜技术,欢迎大家的加入

     

  • 相关阅读:
    题解 CF432D 【Prefixes and Suffixes】
    题解 P3199 【[HNOI2009]最小圈】
    题解 AT1221 【水筒】
    题解 P4381 【[IOI2008]Island】
    题解 CF1242B 【0-1 MST】
    《数据库系统概论》 -- 3.1 SQL概论和DDL
    《数据库系统概论》 -- 2. 关系操作
    《数据库系统概论》 -- 1. 绪论
    配置vim成为IDE
    ubuntu--软件管理
  • 原文地址:https://www.cnblogs.com/cxiaocai/p/11749158.html
Copyright © 2011-2022 走看看