您是否有任何指示如何确定订阅问题何时发生,以便重新连接?
我的服务使用RabbitMQ.Client.MessagePatterns.Subscription进行订阅.一段时间后,我的客户端默默地停止接收消息.我怀疑网络问题,因为我的VPN连接不是最可靠的.
我已经通过文档阅读了一段时间,寻找一个关键,以找出这个订阅何时可能由于网络问题而没有太多运气而被打破.我已经尝试检查连接和通道是否仍然打开,但似乎总是报告它仍处于打开状态.
它确实处理的消息工作得很好,并被确认回队列,所以我不认为这是"ack"的问题.
我确信我一定只是错过了一些简单的东西,但我还没有找到它.
public void Run(string brokerUri, Action<byte[]> handler)
{
log.Debug("Connecting to broker: {0}".Fill(brokerUri));
ConnectionFactory factory = new ConnectionFactory { Uri = brokerUri };
using (IConnection connection = factory.CreateConnection())
{
using (IModel channel = connection.CreateModel())
{
channel.QueueDeclare(queueName, true, false, false, null);
using (Subscription subscription = new Subscription(channel, queueName, false))
{
while (!Cancelled)
{
BasicDeliverEventArgs args;
if (!channel.IsOpen)
{
log.Error("The channel is no longer open, but we are still trying to process messages.");
throw new InvalidOperationException("Channel is closed.");
} …Run Code Online (Sandbox Code Playgroud)