0

我有一个与RabbitMq交互的asp.net mvc应用程序。一切工作在当地很好。无法从Asp.Net应用程序连接到RabbitMq

但是,我们的部署服务器无法连接

DEBUG|MassTransit.RabbitMqTransport.Integration.RabbitMqConnectionCache|Connecting: [email protected]:5672/| 
ERROR|MassTransit.RabbitMqTransport.RabbitMqReceiveTransport|RabbitMQ connection failed: Connect failed: [email protected]:5672/| 

什么,我能够收集到这是

  • 为了连接到RabbitMQ的,你需要一个有效的.erlang.cookie(在Windows )你的用户根
  • 尽我所知,这个cookie是在你安装rabbitmq时创建的
  • 在开发中我们使用的是localdb,它以d eveloper的用户(拥有此cookie)
  • 在生产中,应用程序运行的IIS使用应用程序池和内置ApplicationPoolIdentity帐户。其中没有用于生成.erlang.cookie文件的用户文件夹。

所以问题变成了......现在呢?这是如何工作的?

显然我们可以为web应用程序创建一个专用的用户,但我们的系统管理员可以理解地不愿意这样做。

另一个线索是,当我尝试RDP时,以自己身份登录并连接到兔子,我发现我不能。在排除故障后,我发现我的cookie与其他人的cookie不匹配!我用c:\windows\.erlang.cookie替换它,然后可以从cli连接。似乎有可能在那里安装了一个cookie 某处为应用程序身份但它是一个不正确的cookie。它将去的地点是什么?

+0

Erlang需要cookie来启动rabbitmq--但是,这不需要从客户端连接到代理。你能澄清erlang/rabbitmq是如何启动的吗?还要说明你正在使用哪个客户端。 – theMayer

+0

@theMayer rabbitmq正在作为一个Windows服务启动(它安装的标准方式)。我正在使用使用[RabbitMQ.Client](https://www.nuget.org/packages/RabbitMQ.Client/)库的[MassTransit](http://masstransit-project.com/)进行连接。 –

+0

也@theMayer我不知道“erlang需要cookie启动rabbitmq”广场与我的经验。当我的用户文件夹中有错误的cookie时,rabbit mq已经在运行,同事可以连接到它,但是我不能。更新我的'.erlang.cookie'允许我连接 –

回答

1

Erlang cookie用于节点间通信,无论是用于群集RabbitMQ还是通过使用rabbitmqctl的命令行联系RabbitMQ。

如果您在使用AMQP连接时遇到问题,那么erlang cookie 在此无关

看看访问控制https://www.rabbitmq.com/access-control.html,看看您的用户是否正确配置。

同时检查服务器日志以了解连接被拒绝的原因。

+0

是的,日志也没有人口。最终我们发现,由于(当然)权限,我们遇到了问题。该cookie是一个有教育的猜测,涉及什么。 –

相关问题