【发布时间】:2016-02-23 10:43:08
【问题描述】:
我有一个与 RabbitMq 交互的 asp.net mvc 应用程序。一切都在本地运行良好。
但是,在我们的部署服务器上它无法连接
DEBUG|MassTransit.RabbitMqTransport.Integration.RabbitMqConnectionCache|Connecting: muyuser@localhost:5672/|
ERROR|MassTransit.RabbitMqTransport.RabbitMqReceiveTransport|RabbitMQ connection failed: Connect failed: muyuser@localhost:5672/|
我能收集到的是这个
- 为了连接到 RabbitMq,您需要一个有效的
.erlang.cookie(在 Windows 上)您的用户根目录 - 据我所知,这个 cookie 是在您安装 rabbitmq 时创建的
- 在开发中,我们使用 localdb 作为开发者的用户运行(有这个 cookie)
- 在生产中,应用程序从使用应用程序池和内置
ApplicationPoolIdentity帐户的IIS 运行。其中没有供.erlang.cookie文件使用的用户文件夹。
所以问题变成了……现在呢?这是如何工作的?
显然我们可以为 Web 应用程序创建一个专用用户,但我们的系统管理员非常不愿意这样做,这是可以理解的。
另一个线索是,当我尝试 RDP 时,以我自己的身份登录并连接到 rabbit,我发现我做不到。在排除故障后,我发现我的 cookie 与其他可以匹配的 cookie 不匹配!我用来自c:\windows\.erlang.cookie 的那个替换了它,然后可以从cli 连接。似乎有可能为 applicationpoolidentitysomewhere 安装了一个 cookie,但它是一个不正确的 cookie。它会去哪里?
【问题讨论】:
-
Erlang 需要 cookie 来启动rabbitmq - 但是,从客户端连接到代理不需要这样做。您能否澄清一下 erlang/rabbitmq 是如何启动的?还要说明您使用的是哪个客户端。
-
@theMayer rabbitmq 作为 Windows 服务启动(它的标准安装方式)。我正在使用 MassTransit 进行连接,它在后台使用 RabbitMQ.Client 库。
-
另外@theMayer 我不确定“erlang 要求 cookie 启动 rabbitmq”如何与我的经验相匹配。当我的用户文件夹中有错误的 cookie 时,rabbit mq 已经在运行并且同事可以连接到它但我不能。更新我的
.erlang.cookie允许我连接 -
通过 AMQP 协议连接到代理不需要您甚至在同一台机器上 - cookie 特定于使用 rabbitmqctl 和其他命令行工具 - 所以必须进行其他操作。
-
我无法解决您的问题,因为顶部的错误是 AMQP 连接错误,并且您的故障排除步骤涉及 erlang cookie,这与通过连接到代理没有任何关系5672.
标签: windows iis-7 rabbitmq windows-server-2012 application-pool