我创建了一个简单的传奇原型项目,其中RabbitMQ作为传输,RavenDB作为持久性机制。原型实际上按预期运行,但每隔几秒我就会收到此错误信息:
错误NServiceBus.Transports.RabbitMQ.RabbitMqDequeueStrategy无法接收来自[Assembly] .Retries的消息
System.AggregateException:发生一个或多个错误。 - > System.IO.EndOfStreamException:SharedQueue已关闭
在RabbitMQ.Util.SharedQueue 1.EnsureIsOpen()
at RabbitMQ.Util.SharedQueue
1.Dequeue(int 32毫秒超时.......
我也会在上面的消息之后立即得到一条几乎相同的消息,但它说它无法接收来自RabbitMGPoller.Timeouts的消息
除此之外,还有持续的INFO消息说: NServiceBus.Transports.RabbitMQ.RabbitMqConnectionManager与RabbitMQ代理断开连接,原因:AMQP关闭原因,启动库,代码= 0文本="流结束" ...原因= System.IOException:无法写入数据到传输连接:远程主机强制关闭现有连接。 ---> System.Net.Sockets.SocketException:远程主机强制关闭现有连接...
我尝试将DequeueTimeout = 600值添加到传输连接,但仍会出现相同的错误。我还尝试在配置文件中添加以下密钥,但它似乎仍然没有帮助。
答案 0 :(得分:0)
我最终弄清楚了,只是我对RabbitMQ和NServiceBus缺乏了解。我将RabbitMQ连接的RequestedHeartbeat值更改为更大的值,即RequestedHeartbeat = 6000。这解决了我的问题。