簡體   English   中英

RabbitMQ Broker機器上的間歇性異常超時

[英]RabbitMQ Brokerunreachable exception timeout intermittently from a machine

我們有11台運行IIS的Windows webapp計算機。 這些將消息發送到RabbitMQ服務器以執行任務。 我們將Rabbit用於基本的工作隊列功能。 對於每個消息,發布一個新的連接並創建一個通道。 非常類似於此處的教程-https: //www.rabbitmq.com/tutorials/tutorial-two-dotnet.html

在大多數情況下,這是非常有效的,但是在生產中,每天一次或兩次從零星的機器中偶爾散發出來,我們開始在ConnectionFactory.CreateConnection上收到此異常。

[BrokerUnreachableException: None of the specified endpoints were reachable]
RabbitMQ.Client.ConnectionFactory.CreateConnection():56

[TimeoutException: Connection to amqp://machinename.domain.net:5672 timed out]
    RabbitMQ.Client.Impl.SocketFrameHandler.Connect(TcpClient socket, AmqpTcpEndpoint endpoint, Int32 timeout):65
    RabbitMQ.Client.Impl.SocketFrameHandler..ctor(AmqpTcpEndpoint endpoint, Func2 socketFactory, Int32 timeout):52
    RabbitMQ.Client.Framing.Impl.ProtocolBase.CreateFrameHandler(AmqpTcpEndpoint endpoint, Func`2 socketFactory, Int32 timeout):8
    RabbitMQ.Client.ConnectionFactory.CreateConnection():45

這導致消息丟失。 我一直在研究每種機器設置的最大並發連接數-但沒有帶我到任何地方。 這也不符合我們的高峰流量。 我擁有的最有趣的線索是,它是連發發生的,並且當它發生時,僅一次發生在11台機器中的一台將消息發布到隊列中。

我正在使用Rabbitmq點網客戶端。

關於可能的原因有什么想法或建議?

可能是某種數據包丟失? 為什么不嘗試...捕獲..重試?

在命令窗口中執行ping RabbitServerHostName -t (其中RabbitServerHostName是安裝了Rabbit的服務器),幾天后看您丟失了多少個數據包。

由於存在所有數據包丟失和網絡不穩定的問題,因此幾乎總是建議重試連接創建的方法。 EasyNetQ庫確實做得很好。 但是,當您獲得此異常直到建立連接時,實現自己的基於計時器的重試並不是很復雜。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM