zoukankan      html  css  js  c++  java
  • 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)
    在 EasyNetQ.Producer.SendReceive.<>c__DisplayClass12_0.<DeclareQueue>b__0(String key)
    在 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

  • 相关阅读:
    处理了一个“服务器能ping得通,但telnet连接失败”导致数据库登录不了的问题
    解决了一个oracle登录缓慢的问题
    今天解决了一个mysql远程登录和本机ip登录都失败的问题
    c++笔记
    c语言笔记
    常见并发与系统设计
    linux网络IO笔记
    linux文件IO全景解析
    linux网络协议笔记
    长大后才懂的蜡笔小新 ​​​​
  • 原文地址:https://www.cnblogs.com/wisdo/p/10737768.html
Copyright © 2011-2022 走看看