【问题标题】:How to dynamically set prefetch count RabbitMq如何动态设置预取计数 RabbitMq
【发布时间】:2017-09-16 17:10:56
【问题描述】:

可以动态设置预取计数参数吗?这就是我想要实现的目标。我有队列订阅者的服务。我有一种机制来观察服务资源,如处理器使用情况、RAM 等。当这些资源被大量使用时,这种机制会向服务发送通知。因此,当收到此通知时,我喜欢停止从队列中检索消息。可以通过取消订阅队列来完成,但它会有效吗?当此通知到来时,是否可以将预取计数动态设置为 1?如果没有,如何实现这种事情?我使用 C# 和 MasstTransit 作为服务总线。

【问题讨论】:

    标签: c# rabbitmq masstransit


    【解决方案1】:

    有趣的是,您应该问,实际上有一个非常具体的单元测试可以做到这一点:

    https://github.com/MassTransit/MassTransit/blob/master/tests/MassTransit.RabbitMqTransport.Tests/SetPrefetchCount_Specs.cs

    【解决方案2】:

    停止使用所有消息的最简单方法是停止总线。请记住,即使总线停止,发送消息仍然有效。要再次开始接收消息,您只需启动总线即可。

    操纵预取计数不会阻止消费消息。

    您所描述的行为的良好做法是使用断路器。但是,您不能从外部触发断路器,至少不能用于 MassTransit 中使用的断路器(来自 GreenPipes 的断路器)。只有在指定的时间段内达到特定的故障阈值时才会触发。如果需要,您可能还想创建自己的版本。您可以在GreenPipes 中查看它是如何完成的。

    【讨论】:

      猜你喜欢
      • 2016-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      • 2020-04-01
      相关资源
      最近更新 更多