将 EasyNetQ 升级到 6.0.1 或更高版本后,我在连接到 Rabbit 时遇到问题。
为了确保应用程序的任何其他部分不会产生这些问题,我做了一个最小的项目来测试它,并且我在那里遇到了同样的问题。
这是我的全部程序:
using EasyNetQ;
using RabbitMQ.Client;
using System;
namespace MinimalRabbitProject
{
internal class Program
{
static void Main(string[] args)
{
var connectionString = "host=localhost;username=test;password=test";
using (var bus = RabbitHutch.CreateBus(connectionString))
{
Console.WriteLine("Connected to RabbitMQ");
}
}
}
}
这似乎只是“默默地失败”。我没有收到任何错误/异常。但是bus.Advanced.IsConnected是假的,我在RabbitMQ管理中没有看到任何连接。
如果我将 EasyNetQ 降级到以前的版本(5.6.0),这可以正常工作,并且我可以在 RabbitMQ 管理中看到连接。
我尝试升级到最新版本(7.8.0),但这也不起作用。 5.6.0 是最后一个可用的版本。
从版本 6 的发行说明中,我看不到任何会影响创建连接的内容。我的代码也和他们的示例代码相同。
直接使用 RabbitMQ.Client 库也可以:
ConnectionFactory factory = new ConnectionFactory()
{
UserName = "test",
Password = "test",
VirtualHost = "/",
HostName = "localhost",
Port = 5672
};
var connection = factory.CreateConnection();
有人对我如何让它发挥作用有任何建议吗?如果重要的话,我在本地使用 RabbitMQ 3.12.12 和 Erlang 25.3.2.8。我也尝试过不同的服务器,得到相同的结果(不确定版本,但与我的不同)
如果使用,请尝试在使用“EasyNetQ”时升级此nuget:“System.Runtime.CompilerServices.Unsafe”。我知道这听起来很遥远,但我花了几个小时试图解开这个谜团,最终尝试一次升级一个 nuget。这个“System.Runtime.CompilerServices.Unsafe”nuget 成功了!
祝你好运!