Rabbitmq消息服務器通訊異常: name must not be blank
前人挖坑,後人填! 倒黴的遇到一個破項目,該 項目使用了 RabbitMQ 消息隊列向服務器發送消息, 但在發送中老是報 RabbitMQ 服務器異常! 呃,查看了服務器,服務器好好的,日誌中卻是這樣的記錄, 真是見鬼, 調試跟蹤了一下發現:
RabbitMQ消息服務器通訊異常:System.ArgumentException: name must not be blank
參數名: name
在 EasyNetQ.Preconditions.CheckNotBlank(String value, String name, String message)
在 EasyNetQ.RabbitAdvancedBus.QueueDeclare(String name, Boolean passive, Boolean durable, Boolean exclusive, Boolean autoDelete, Nullable`1 perQueueMessageTtl, Nullable`1 expires, Nullable`1 maxPriority, String deadLetterExchange, String deadLetterRoutingKey, Nullable`1 maxLength, Nullable`1 maxLengthBytes)
在 System.Collections.Concurrent.ConcurrentDictionary`2.AddOrUpdate(TKey key, Func`2 addValueFactory, Func`3 updateValueFactory)
在 EasyNetQ.Producer.SendReceive.DeclareQueue(String queueName)
在 EasyNetQ.Producer.SendReceive.Send[T](String queue, T message)
這個異常主要 是在調用 RabbitMQ接口的Send 方法時,拋出來的,先來看看 Send 方法的說明
// // Summary: // Send a message directly to a queue // // Parameters: // queue: // The queue to send to // // message: // The message // // Type parameters:// T: // The type of message to send void Send<T>(string queue, T message) where T : class;
這個接口中有兩個參數, queue和 message , 但這現個參數 queue 是不能為空的,它表示的是一個隊列的名稱
解決方案:
在向 Send 接口傳遞queue 參數時,判斷下是否為空或null
Rabbitmq消息服務器通訊異常: name must not be blank