首页 新闻 会员 周边 捐助

c#有rabbitmq添加用户,授权的包吗

0
[已解决问题] 解决于 2024-07-02 17:11

项目需求,添加一个用户,就要新建一个mq用户以及授权。目前只看到可以调用mq服务的api实现。

Enkidu的主页 Enkidu | 菜鸟二级 | 园豆:204
提问于:2023-11-09 10:51
< >
分享
最佳答案
0

在 RabbitMQ 中,一般来说,用户的管理和授权是通过 RabbitMQ Management HTTP API 进行的。对于 C# 语言,你可以使用 HttpClient 或者一些现有的 RabbitMQ 客户端库来与 RabbitMQ Management API 进行交互。

以下是一个基本的 C# 代码示例,使用 HttpClient 来添加用户和授权:

csharp

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
static async Task Main()
{
string rabbitMqApiUrl = "http://your-rabbitmq-server:15672/api/";

    string username = "new_user";
    string password = "new_password";
    string virtualHost = "/";

    await CreateUser(rabbitMqApiUrl, username, password);
    await SetUserPermissions(rabbitMqApiUrl, username, virtualHost);
}

static async Task CreateUser(string apiUrl, string username, string password)
{
    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes("your-rabbitmq-username:your-rabbitmq-password")));

        var content = new StringContent($"{{\"password\":\"{password}\", \"tags\":\"\"}}", Encoding.UTF8, "application/json");
        var response = await client.PutAsync($"{apiUrl}users/{username}", content);

        response.EnsureSuccessStatusCode();

        Console.WriteLine($"User '{username}' created successfully.");
    }
}

static async Task SetUserPermissions(string apiUrl, string username, string virtualHost)
{
    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes("your-rabbitmq-username:your-rabbitmq-password")));

        var content = new StringContent("{\"configure\":\".*\",\"write\":\".*\",\"read\":\".*\"}", Encoding.UTF8, "application/json");
        var response = await client.PutAsync($"{apiUrl}permissions/{virtualHost}/{username}", content);

        response.EnsureSuccessStatusCode();

        Console.WriteLine($"Permissions set for user '{username}'.");
    }
}

}
在这个例子中,你需要替换 your-rabbitmq-server、your-rabbitmq-username 和 your-rabbitmq-password 为你的 RabbitMQ 服务器地址以及已有的管理员用户名和密码。

请注意,这里使用了 RabbitMQ Management API 的 HTTP PUT 请求来创建用户和设置权限。你需要确保 RabbitMQ Management 插件已经安装并且启用,以便使用这些 API。

这个例子是基于 RabbitMQ 3.8 版本的 Management API,如果你的 RabbitMQ 版本不同,你可能需要查看相应版本的 API 文档以确保正确的调用方式。

奖励园豆:5
Technologyforgood | 大侠五级 |园豆:7535 | 2023-11-13 22:24
其他回答(1)
0

可以走http api,应该有接口https://rawcdn.githack.com/rabbitmq/rabbitmq-server/v3.12.12/deps/rabbitmq_management/priv/www/api/index.html

我才不是老家伙 | 园豆:276 (菜鸟二级) | 2024-02-22 09:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册