默认情况下,Rebus 将根据BackoffBehavior中的时间跨度逐渐取消对队列的轮询- 正如您所看到的,如果它保持空闲足够长的时间,它将最终每 5 秒轮询一次队列。
您可以通过以下方式更改为低延迟退避策略
Configure.With(...)
.(...)
.Behavior(b => b. SetLowLatencyBackoffBehavior())
.(...)
在配置拼写中。
更新:在更高版本的 Rebus(即版本 >= 2)中,可以像这样自定义回退时间:
Configure.With(...)
.(...)
.Options(o => {
o.SetBackoffTimes(
TimeSpan.FromMilliseconds(100),
TimeSpan.FromMilliseconds(200),
TimeSpan.FromSeconds(1)
);
})
在这种情况下,在空闲运行的前两秒以 100 毫秒和 200 毫秒的间隔轮询,然后在其余时间以 1 秒的间隔轮询。
如果这个级别的定制还不够,ISyncBackoffStrategy
可以通过上面o.Register<ISyncBackoffStrategy>(c => new YourOwn SyncBackoffStrategy())
的.Options
配置器来实现和使用。