1. 程式人生 > >rabbitmq坑點與異常處理

rabbitmq坑點與異常處理

來源:http://www.cnblogs.com/gossip/p/4573056.html

一、None of the specified endpoints were reachable 這個異常在建立連線時丟擲(CreateConnection()),原因一般是ConnectionFactory引數設定不對,比如HostName、UserName、Password 標準設定: var factory = new ConnectionFactory(); factory.UserName = QueueSetttiong.UserName;   //使用者名稱 factory.Password = QueueSetttiong.Password;      //密碼 factory.HostName = QueueSetttiong.HostName;  //Rabbitmq服務IP,不包含埠
factory.Port = AmqpTcpEndpoint.UseDefaultPort; factory.VirtualHost = QueueSetttiong.VirtualHost;  //預設為"/" factory.Protocol = Protocols.DefaultProtocol; 部署生產後,factory配置都ok,但是還是拋異常None of the specified endpoints were reachable,最後發現原因是生產機器防火牆未開啟RabbitMQ的埠,RabbitMQ的預設埠是:5672

另外一個可能的原因:未設定VirtualHost的許可權

設定方法:RabbitmqWeb管理網站-->Admin

未設定許可權時:

設定許可權:(點選admin進入設定頁面)

網上說要修改主機名,找半天不知道怎麼修改,重新安裝Rabbitmq服務端即可,有時候需要重啟

 三、異常:Message:Already closed: The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=320, text="CONNECTION_FORCED - broker forced connection closure with reason 'shutdown'", classId=0, methodId=0, cause= StackTrace

原因:佇列服務端重啟後,佇列釋出端斷開了介面,無法再次傳送訊息

解決:傳送端設定斷開連線後自動啟動屬性,預設為斷開後每隔五秒鐘重試連線

 var factory = new ConnectionFactory();

factory.AutomaticRecoveryEnabled = true;   //設定埠後自動恢復連線屬性即可

四、Rabbitmq實際資料檔案、日誌檔案、配置檔案路徑

位址列輸入:%APPDATA%\RabbitMQ\

C:\Users\Administrator\AppData\Roaming\RabbitMQ

資訊來源:C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.5.1\etc 中的README.txt