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是一個有教育的猜測,涉及什麼。 –

相關問題