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


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

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

1. 用戶管理

1.1 查看用戶列表

RabbitMQ安裝完成后,會有一個默認用戶(guest guest),那么我們如何查看用戶列表呢?

有2種方式,第1種是登錄管理后台http://localhost:15672/,在界面中查看:

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

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

rabbitmqctl.bat list_users

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

1.2 新建用戶

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

仍然有2種方式,第1種方式是通過管理后台新建:

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

 rabbitmqctl.bat add_user developer 123456

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

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,歡迎下載。

windows下 安裝 rabbitMQ 及操作常用命令

朱忠華《RabbitMQ實戰指南》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM