【问题标题】:The object does not connect to the server对象未连接到服务器
【发布时间】:2018-12-17 16:51:28
【问题描述】:

我有这个代码:

public class Rabbit
    {
        public IConnection GetConnection(string hostName, string userName, string password)
        {
            ConnectionFactory connectionFactory = new ConnectionFactory();
            connectionFactory.HostName = "1.2.3.4";
            connectionFactory.UserName = "login";
            connectionFactory.Password = "pass";
            connectionFactory.Port = 5672; 
            return connectionFactory.CreateConnection();
        }

        public  void Send(string queue, string data)
        {
            using (IConnection connection = new ConnectionFactory().CreateConnection())
            {
                using (IModel channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue, false, false, false, null);
                    channel.BasicPublish(string.Empty, queue, null, Encoding.UTF8.GetBytes(data));

                }
            }
        }

        public  string  Receive(string queue)
        {
            using (IConnection connection = new ConnectionFactory().CreateConnection())
            {
                using (IModel channelconsumer = connection.CreateModel())
                {
                    channelconsumer.QueueDeclare(queue, false, false, false, null);
                    BasicGetResult result = channelconsumer.BasicGet(queue, true);
                    if (result != null)
                    {
                        string data = Encoding.UTF8.GetString(result.Body);
                        Console.WriteLine(data);
                        return data;
                    } else
                    {
                        return null;
                    }
                }
            }
        }
    }

我运行我的代码:

var rabbit = new Rabbit();
rabbit.Send("sample.queue.queue", json);

我的 RABBIT 对象连接到 localhost,而不是配置在 GetConnection 中的服务器。

我可以请您更正此代码吗? 我的代码中的登录详细信息是正确的。

【问题讨论】:

  • 我这里改了。在我的代码中,我有正确的数据。可能是GetConnection函数调用不正确?

标签: c#


【解决方案1】:

您似乎没有使用 GetConnection 方法,您只需创建一个完全独立的 ConnectionFactory 使其使用默认值。

看来你应该替换

using (IConnection connection = new ConnectionFactory().CreateConnection())

using (IConnection connection = GetConnection())

【讨论】:

  • 现在我有错误:return connectionFactory.CreateConnection(); - RabbitMQ.Client.Exceptions.BrokerUnreachableException:“没有一个指定的端点是可达的”。 AuthenticationFailureException: ACCESS_REFUSED - 使用身份验证机制 PLAIN 拒绝登录。有关详细信息,请参阅代理日志文件。
  • 该错误表明您的端点详细信息不正确。您确定 IP/端口地址和登录凭据正确吗?
  • 好的。它正在工作:) 现在我有错误:vhost 'centralDev' 中的 sample.queue.queue' 不等效 - RabbitMQ.Client.Exceptions.OperationInterruptedException:“AMQP 操作被中断:AMQP 关闭原因,由 Peer 发起,代码=406, text="PRECONDITION_FAILED - vhost 'sample.queue.queue' 中队列 'insurance.motor.interrisk.calc' 的参数不等效", classId=50, methodId=10, cause=”
  • 不同的错误应该提出单独的问题,这样寻找ACCESS_REFUSEDPRECONDITION_FAILED 的其他人会找到带有适当答案的完整问题。
猜你喜欢
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多