Mi aplicación rabbitmq se ejecuta en el servidor de Windows 2012, al azar uso para obtener este error.
Exception Type: RabbitMQ.Client.Exceptions.BrokerUnreachableException None of the specified endpoints were reachable at RabbitMQ.Client.ConnectionFactory.CreateConnection() at Program.Main(String[] args) Stream does not support writing. at System.IO.BufferedStream.EnsureCanWrite() at System.IO.BufferedStream.Write(Byte[] array, Int32 offset, Int32 count) at RabbitMQ.Client.Impl.SocketFrameHandler.SendHeader() at RabbitMQ.Client.Framing.Impl.Connection.StartAndTune() at RabbitMQ.Client.Framing.Impl.Connection.Open(Boolean insist) at RabbitMQ.Client.Framing.Impl.Connection..ctor(IConnectionFactory factory, Boolean insist, IFrameHandler frameHandler) at RabbitMQ.Client.Framing.Impl.ProtocolBase.CreateConnection(IConnectionFactory factory, Boolean insist, IFrameHandler frameHandler) at RabbitMQ.Client.ConnectionFactory.CreateConnection()
¿Cuál podría ser la razón de que falle la conexión aleatoriamente y automáticamente comience a conectarse?
¿Alguien puede ayudarme en esto?
Tuve este problema y finalmente pude resolverlo agregando la propiedad "Ssl" de la clase ConnectionFactory, con la subpropiedad "ServerName" especificada.
Esto es lo que hice y se conectó al servidor Rabbit MQ. Preste atención a la parte " ServerName " del código a continuación:
var rabbitMqConnectionFactory = new ConnectionFactory { HostName = rabbitMqHostName, Port = rabbitMqPort, UserName = rabbitMqUserName, Password = rabbitMqPassword, VirtualHost = rabbitMqVirtualHost, RequestedHeartbeat = 60, Ssl = { **ServerName** = rabbitMqHostName, Enabled = useSsl } };
Es difícil decir cuál es exactamente el problema, pero una de las razones por las que ocurre este problema es el latido del corazón de RabbitMQ, puede cambiar este valor. para obtener más información, puede consultar este enlace Detección de conexiones TCP inactivas con Heartbeats
ConnectionFactory cf = new ConnectionFactory(); // set the heartbeat timeout to 60 seconds cf.setRequestedHeartbeat(60);
Tuve el mismo problema y lo resolví creando un nuevo RabbitMQ Docker Container con docker compose:
rabbitmq: container_name: rabbitmq tty: true hostname: rabbitmq ports: - "15672:15672" - "5672:5672" image: rabbitmq:3-management environment: - RABBITMQ_DEFAULT_USER=user - RABBITMQ_DEFAULT_PASS=password
Y para acceder a él a través del código que tuve que configurar en mi archivo appsettings.json, el host como la dirección IP de mi host local:
"RabbitMqSend": { "Hostname": "192.168.0.12", "QueueName": "SendQueue", "UserName": "user", "Password": "password"},
Con esto me funcionó.