小编Aar*_*ner的帖子

RabbitMQ C#驱动程序停止接收消息

您是否有任何指示如何确定订阅问题何时发生,以便重新连接?

我的服务使用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)

c# rabbitmq

30
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

rabbitmq ×1