【问题标题】:Mimic Timeout Exception in RabbitMQ, .NETRabbitMQ,.NET 中的模拟超时异常
【发布时间】:2018-07-16 20:59:38
【问题描述】:

背景: 我们的应用程序是一个基于.NET 的多线程应用程序。每个线程将连接到同一个交换并对应于不同的队列。每个线程都使用自己的长期连接,一切都很顺利,直到有一天我们在所有线程上都出现超时异常,我们的应用程序崩溃了。我认为这是一个服务器端问题,很少有网站提到它可能是由于垃圾收集或内存限制。 解决方案:RabbitmQ 建议使用 NetworkRecoveryInterval 选项来解决超时问题。

我需要帮助来模拟这种情况并确保修复有效。

提前谢谢你。

【问题讨论】:

  • 您说:“我认为它是服务器端问题,很少有网站提到它可能是由于垃圾收集或内存限制。”你为什么会这样假设?你有证据支持这种说法吗?您没有提及重要信息,例如您使用的是什么版本的 RabbitMQ 和 Erlang,或者您是否在 RabbitMQ 日志中发现了任何有趣的内容。
  • @LukeBakken 不幸的是,我们没有服务器日志,我们只有应用程序日志,它为我们提供了以下信息: RabbitMQ-EXCEPTION 处理工作线程消息:System.TimeoutException:操作已超时。在 RabbitMQ.Util.BlockingCell.GetValue(TimeSpan timeout) 在 RabbitMQ.Client.Impl.SimpleBlockingRpcContinuation.GetReply(TimeSpan timeout) 在 RabbitMQ.Client.Impl.ModelBase.BasicGet(String queue, Boolean autoAck) 版本是:RabbitMQ 3.6。 12、二郎19.3.2
  • 默认情况下,每个操作都有超时,我相信。在代码中搜索ContinuationTimeout - 你应该可以扩展它。我认为BasicGet 可以在队列中没有消息消费的情况下超时。
  • @LukeBakken 我尝试在队列中没有消息的情况下进行模拟,但没有成功,

标签: c# .net rabbitmq


【解决方案1】:

toxiproxy 应用程序可以满足您的需求。


注意:RabbitMQ 团队会监控 the rabbitmq-users mailing list,并且有时只会回答 StackOverflow 上的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-20
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多