RabbitMQ - ExchangeDeclare 在 .NET 客户端中被拒绝并显示 ACCESS_REFUSED

Pie*_*rOz 5 .net c# rabbitmq rabbitmq-exchange

我对 RabbitMQ 还很陌生,我必须实现一个 .NET 客户端,该客户端需要将消息发布到第三方托管的 RabbitMQ 服务器上的 Exchange 实体。

与服务器的连接似乎运行良好,但是当我想声明我必须使用的 Exchange 通道时,情况变得更糟。

using (var connection = connectionFactory.CreateConnection())
{
    IModel model = connection.CreateModel();
    model.ExchangeDeclare(exchangeName, ExchangeType.Direct);
    // ... the rest of the code is never reached
}
Run Code Online (Sandbox Code Playgroud)

通过这些行,我从服务器收到一条异常消息

The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=403, text="ACCESS_REFUSED - access to exchange ... in vhost ... refused for user ...", classId=40, methodId=10, cause=
 "Connection Closed, error code 403 (ACCESS_REFUSED)"
Run Code Online (Sandbox Code Playgroud)

这是什么意思?这是否意味着为我提供连接到 AMQP 服务器的凭据的第三方尚未授予 Exchange“exchangeName”足够的权限?或者我在客户端做错了什么?我真的需要打电话吗ExchangeDeclare

谢谢您的帮助

小智 0

ExchangeDeclarePassive()方法在这种情况下很方便。当连接到外部AMQP服务器时,大多数情况下,不需要显式声明exchange。您只需声明一个队列并将其绑定到现有交换器即可。有关交换的信息应通过您连接的任何服务提供给您。