• 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

  • 相关阅读:
    .NET CORE 技术债
    .Net Core/Framework之Nginx反向代理后获取客户端IP等数据探索
    托管ASP.NET Core应用程序到Windows服务中
    Office在线预览及PDF在线预览的实现方式大集合
    Ubuntu 16.10 虚拟机安装记录
    .Net Core 之 图形验证码
    Ubuntu之Mysql安装及基本设置
    .Net Core 之 Ubuntu 14.04 部署过程
    常用.net反编译替换正则表达式
    江湖救急:webbrowser中js文件丢失问题~
  • 原文地址:https://www.cnblogs.com/wisdo/p/10737768.html
Copyright © 2020-2023  润新知