RabbitMQ使用教程(二)RabbitMQ用戶管理,角色管理及權限設置

上一篇博客 RabbitMQ使用教程(一)RabbitMQ環境安裝配置及Hello World示例 中,咱們成功的安裝好了RabbitMQ環境,並經過一個Java客戶端示例瞭解了用生產者來發布消息,用消費者來消費消息。html

本篇博客主要講解下RabbitMQ如何管理用戶(新增/刪除/修改密碼),如何給用戶設置角色,如何設置用戶權限,接下來,咱們一一講解。java

1.用戶管理

1.1查看用戶列表

RabbitMQ安裝完成後,會有一個默認用戶(guest guest),那麼咱們如何查看用戶列表呢?git

有2種方式,第1種是登陸管理後臺http://localhost:15672/,在界面中查看:github

第2種方式是經過命令查看:spring

cd E:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.15\sbin

rabbitmqctl.bat list_users

注意:第1個命令中的路徑修改成你機器RabblitMQ的安裝路徑。shell

1.2新建用戶

在實際的使用過程當中,不可能只存在這1個用戶,有時咱們須要新建1個用戶給到開發人員使用,好比新建個用戶developer 123456。windows

仍然有2種方式,第1種方式是經過管理後臺新建:安全

第2種方式是經過命令新增:springboot

rabbitmqctl.bat add_user developer 123456

細心的網友也許會問爲啥用戶guest的tags是[administrator],而新建的用戶developer的tags是[]呢,彆着急,這一點會在下面的2.角色設置中講解。3d

1.3刪除用戶

在實際使用過程當中,刪除用戶的場景確定也是存在的,好比我想把剛剛新建的用戶developer刪除掉。

仍然有2種方式,第1種方式是經過管理後臺新建:

第2種方式是經過命令刪除:

rabbitmqctl.bat delete_user developer

由於後面還要使用用戶developer,刪除完能夠再新增回來。

1.4修改密碼

可能有人會以爲123456這種密碼,太簡單了,不安全,我要修改爲developer123456。

仍然有2種方式,第1種方式是經過管理後臺修改密碼:

第2種方式是經過命令修改密碼:

rabbitmqctl change_password developer developer123456

2.角色設置

RabbitMQ中主要有administrator,monitoring,policymaker,management,impersonator,none幾種角色。

默認的用戶guest是administrator角色,新建的developer用戶沒有設置角色,即爲none,若是咱們想把developer用戶設置爲administrator角色,第1種方式是經過界面修改:

也能夠經過如下命令來修改:

rabbitmqctl.bat set_user_tags developer administrator

也能夠給用戶設置多個角色,如給用戶developer設置administrator,monitoring:

rabbitmqctl.bat set_user_tags developer administrator monitoring

注意:若是是設置多個角色,管理界面用,分隔,命令用空格分隔。

關於這幾種角色之間的區別,目前我尚未看到很好的文章講解的很清楚,爲了避免誤導用戶,這裏就先不講解了,

暫且先設置爲超級管理員administrator便可。

3.權限配置

3.1設置用戶權限

讓咱們適當修改下上篇博客中的生產者類,使用新建的用戶developer:

package com.zwwhnly.springbootaction.rabbitmq.helloworld;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Producer {
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] args) throws IOException, TimeoutException {
        // 建立鏈接
        ConnectionFactory factory = new ConnectionFactory();
        // 設置 RabbitMQ 的主機名
        factory.setHost("localhost");

        factory.setUsername("developer");
        factory.setPassword("developer123456");
        factory.setPort(5672);

        // 建立一個鏈接
        Connection connection = factory.newConnection();
        // 建立一個通道
        Channel channel = connection.createChannel();
        // 指定一個隊列,不存在的話自動建立
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        // 發送消息
        String message = "Hello World!";
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
        System.out.println(" [x] Sent '" + message + "'");
        // 關閉頻道和鏈接
        channel.close();
        connection.close();
    }
}

運行代碼,發現代碼報錯了,隊列沒有建立成功:

這是爲何呢?讓咱們使用developer用戶登陸管理後臺,看下developer用戶與默認的guest用戶的區別:

由此咱們能夠看出,是由於咱們沒有設置developer用戶能夠訪問的Virtual host致使的。

執行以下命令:

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

此時再運行代碼,發現隊列新建成功,消息發佈成功:

3.2查看(指定vhostpath)全部用戶的權限

rabbitmqctl  list_permissions

查看virtual host爲/的全部用戶權限:

rabbitmqctl  list_permissions -p /

3.3查看指定用戶的權限

查看developer用戶的權限:

rabbitmqctl  list_user_permissions developer

3.4清除用戶權限

清除developer用戶的權限:

rabbitmqctl  clear_permissions developer

4.源碼

源碼地址:https://github.com/zwwhnly/springboot-action.git,歡迎下載。

5.參考連接

windows下 安裝 rabbitMQ 及操做經常使用命令

相關文章
相關標籤/搜索