【问题标题】:Code=403, ACCESS_REFUSED代码=403,ACCESS_REFUSED
【发布时间】:2018-07-18 02:30:57
【问题描述】:

我是 RabbitMQ 的新手。我安装了 v3.7.7。通过以下挖掘,我已经用尽任何其他权限来获得通过this error

我在本地安装了 RabbitMQ,创建了一个接收器和一个客户端进行测试。我正在使用默认交换器,并且能够读取和写入我通过 C# 代码创建的队列。我在远程机器上安装了 RabbitMQ 并尝试了相同的操作,但无法让接收器或写入器执行任何操作连接到服务器。所以我知道授权是正确的,但似乎在某处缺少权限。

在远程服务器上,这是我用于测试的命令:

rabbitmqctl add_vhost /els
rabbitmqctl delete_user guest
rabbitmqctl add_user gavin gavin
rabbitmqctl authenticate_user gavin gavin
rabbitmqctl set_permissions -p /els gavin "^gavin-.*" ".*" ".*"

当我执行以下操作时:

QueueDeclareOk ok = _channel.QueueDeclare(queue.ToString(), durable, exclusive, autoDelete, null);

我收到此错误:

AMQP 操作被中断:AMQP 关闭原因,由 Peer 发起,code=403,text="ACCESS_REFUSED - 用户 'gavin' 拒绝访问 vhost '/els' 中的队列 'Ping'",classId=50 , methodId=10, cause=

在本地,即使 Ping 队列还不存在,它也会在我下面的 BasicConsume() 方法中创建它。我错过了什么吗?有没有办法在访问之前创建这些队列,或者我需要通过 RabbitMQ 的命令添加队列还是什么?

我的监听器代码,它在一个被多次调用的函数中,每个队列一个:

//if queue exists or not, this will return 0 if there are no messages in the queue.
QueueDeclareOk ok = _channel.QueueDeclare(
                                        queue.ToString(), 
                                        durable, 
                                        exclusive, 
                                        autoDelete, 
                                        null);
//returns the number of messages in Ready state in the queue
if (ok.MessageCount > 0)
    Console.WriteLine($" ## {queue.ToString()} has {ok.MessageCount} messages in it's queue. ##");

//create a call back consumer
AsyncEventingBasicConsumer consumer = new AsyncEventingBasicConsumer(_channel);

//method to bind callback to.
consumer.Received += Consumer_Received;

//consume existing and future messages
string consumerTag = _channel.BasicConsume(queue: queue.ToString(),
                        autoAck: autoAck,
                        consumer: consumer);

//add to dictionary so it can be cancel
_consumerTag.Add(queue, consumerTag);

【问题讨论】:

    标签: c# rabbitmq


    【解决方案1】:

    通过以下方式解决:

    rabbitmqctl clear_permissions -p /els gavin
    rabbitmqctl set_permissions -p /els gavin ".*" ".*" ".*"
    

    【讨论】:

    • 你明白最初发生了什么,对吗? ^gavin-.* 正则表达式与名为 Ping 的队列不匹配
    猜你喜欢
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 2018-12-26
    • 2016-01-18
    相关资源
    最近更新 更多