![](/img/trans.png)
[英]Exception while trying to connect rabbit mq on aws mq from .net core 5 application
[英]Rabbit MQ Exception with .NEt core
以下是我收到的異常.Net core and rabbitMQ: The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=405, text='RESOURCE_LOCKED - cannot obtain exclusive access to locked queue 'demo-queue' in虛擬主機'/'。 它可能最初是在另一個連接上聲明的,或者獨占屬性值與原始聲明的值不匹配。', classId=50, methodId=10
生產商:
var factory = new ConnectionFactory
{
Uri = new Uri("amqp://guest:guest@localhost:5672")
};
using var connection= factory.CreateConnection();
using var channel= connection.CreateModel();
channel.QueueDeclare("demo-queue",durable:true,exclusive:true,autoDelete:false, arguments:null);
var message = new
{
Name = "Producer",
Message = "Hello!"
};
var body = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message));
channel.BasicPublish("", "demo-queue",null,body);
消費者:
var factory = new ConnectionFactory
{
Uri = new Uri("amqp://guest:guest@localhost:5672")
};
using var connection = factory.CreateConnection();
using var channel = connection.CreateModel();
channel.QueueDeclare("demo-queue", durable: true,
exclusive: true, autoDelete: false,
arguments: null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (sender, e) =>
{
var body = e.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(message);
};
channel.BasicConsume("demo-queue",true,consumer);
如果我更改我在生產者或消費者中給出的隊列名稱,這是正確的做法還是正確的方法? 這是處理這個問題的正確方法?
在QueueDeclare
部分,您提到了與您創建的隊列不同的屬性。
你所有的錯誤都在這行代碼中。 因為你創建了一個隊列。 現在您想用錯誤的屬性打開它。 我認為exclusive: false
會解決問題
//channel.QueueDeclare("demo-queue",durable:true,exclusive:true,autoDelete:false, arguments:null);
channel.QueueDeclare(queue: "demo-queue",
durable: true,
exclusive: false,
autoDelete: false,
arguments: null);
交換和隊列需要連接。 如果不這樣做,消息將無法知道它將 go 發送到的隊列地址。 QueueDeclare 后,必須綁定交易所地址。 我是這樣實現的。 如果需要,您可以查看我在此處創建的回購協議。 https://github.com/oguzhanKomcu/RabbitMQ_Sample
我認為這是丟失的 function。
public void BindQueu(string exName, string queuName, string routingKey)
{
channel.QueueBind(queuName,exName, routingKey);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.