首页 > 解决方案 > 对象未连接到服务器

问题描述

我有这个代码:

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 对象连接到本地主机,而不是配置在 GetConnection 中的服务器。

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

标签: c#

解决方案


看起来您并没有使用该GetConnection方法,您只需创建一个完全独立的方法,ConnectionFactory使其使用默认值。

看起来你应该更换

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

using (IConnection connection = GetConnection())

推荐阅读