我在服务器和系统上安装了rabbitmq服务。 我想使用RPC模式:
var factory = new ConnectionFactory() {
HostName = "158.2.14.42",
Port = Protocols.DefaultProtocol.DefaultPort,
UserName = "Administrator",
Password = "@server@",
VirtualHost = "/"
ContinuationTimeout = new TimeSpan(10, 0, 0, 0)
};
connection = factory.CreateConnection();
我在创建与此消息的连接时出错:
没有指定的端点可以访问
当我在服务器的localhost实例上使用它时,它工作,但是当我从本地创建到该服务器的连接时,它返回错误。 它不适用于我本地计算机的本地IP和用户名和密码。
任何人都可以帮助我吗?
答案 0 :(得分:6)
谢谢大家。
这样:
RabbitMQ C# connection trouble when using a username and password
安装RabbitMQ后,我在服务器和本地计算机上启用了管理工具:
rabbitmq-plugins enable rabbitmq_management
然后我从services.msc
重启了RabbitMQ服务
我可以在http://localhost:15672
看到rabbitmq管理
我使用用户登录了兔子管理:来宾和传递:来宾
我添加了我最喜欢的用户通行证,具有管理员权限,所以它有效。
答案 1 :(得分:1)
这意味着客户端无法访问服务器158.2.14.42
和默认虚拟主机/
。
可能是防火墙配置
答案 2 :(得分:1)
在我们的例子中,它是 System.Threading.Tasks.Extensions
的程序集绑定失败,我们的异常记录器没有记录 InnerException
Exception information:
Exception type: FileLoadException
Exception message: Could not load file or assembly 'System.Threading.Channels, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
at RabbitMQ.Client.Framing.Impl.AutorecoveringConnection..ctor(ConnectionFactory factory, String clientProvidedName)
at RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName) in /_/projects/RabbitMQ.Client/client/api/ConnectionFactory.cs:line 494
非常糟糕的误导性错误消息。
答案 3 :(得分:0)
默认情况下,正如你所说RabbitMQ会监听5672
但是这可以改变,如果你看一下你的配置(在MQ服务器上),你应该找到一个部分:
rabbit.tcp_listeners
将详细说明正在使用的端口。检查一下你的想法。
另外,您使用的是IPv4还是IPv6?您可能需要额外的配置来支持这两种配置。
读一读:
答案 4 :(得分:0)
不要使用客人。创建您自己的帐户和密码,在http://localhost:15672/#/users中,确保“可以访问虚拟主机”为“/”
var factory = new ConnectionFactory() {
HostName = "192.168.1.121",
Port = 5672,
UserName = "fancky",
Password = "123456"
};
答案 5 :(得分:0)
1)打开RabbitMQ命令提示符
2)将路径更改为安装了Rabbitmq_server的“ C:\ Program Files \ RabbitMQ Server \ rabbitmq_server-3.6.10 \ sbin”。
3)运行以下逗号: rabbitmq-plugins启用rabbitmq_management
如果防火墙阻止了它,则弹出显示。为此允许防火墙。
现在您可以在浏览器中访问了。
答案 6 :(得分:0)
我一直在遇到这个问题,最终它只是将URI提供为小写字母,而将机器名称为大写字母。
花了几个小时才弄清楚,我认为这可能会对其他人有所帮助。
答案 7 :(得分:0)
我也遇到了同样的问题,后来意识到我必须同时打开两个端口,即 15672 和 5672。
以下命令在 docker 容器模型中适用于我。
docker run -it --rm --name mymq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
代码片段:
var factory = new RabbitMQ.Client.ConnectionFactory
{
Uri = new Uri("amqp://guest:guest@localhost:5672/")
};
或
var factory = new ConnectionFactory() { HostName = "localhost" };