NServicebus 4.7.6 不遵守 app.config 上的 SecondLevelRetriesConfig 值

NServicebus 4.7.6 is not respecting the SecondLevelRetriesConfig Values on app.config

代码中没有自定义配置。

<SecondLevelRetriesConfig Enabled="true" TimeIncrease="00:05:00" NumberOfRetries="10" />

它基于默认的 SecondLevelRetriesConfig 值工作,不采用自定义配置。

更新:

很抱歉没有更新场景。 当 nservicebus worker 对 MasternodeConfig 进行配置时,会发生这种情况。它不考虑二级重试的工作节点配置。超时在 MasterNode(分发服务器)中处理。

这将导致第一个 SLR 在 5 分钟后启动...这是您的意图吗?

我在 the Particular docs whebsite

的代码示例上测试了这个

这对你有用吗?

SLR 的行为在 NServiceBus 的主要版本之间有所不同。下面是来自 http://docs.particular.net/nservicebus/scalability-and-ha/distributor/error-handling

的文档转储

如果不使用 NServiceBus v3、v4 或 v5,请检查 link

NServiceBus v5.x

SLR 策略 NumberOfRetries 设置应用于 both 分发器和工作器,TimeIncrease 设置应用于分发器。

当发生错误时,错误管理器会立即调用 SLR 策略。消息将不会转发到重试队列,这是以前的行为。

当达到重试限制时,消息会立即转发到错误队列,或者转发到 .retries 队列并安排重试。如果 SLR 策略输出是需要重试,则将消息转发到 .retries 队列。

NServiceBusv4.x

SLR 策略仅适用于 NumberOfRetriesTimeIncrease 设置的分发服务器。

分发服务器有一个 .retries 队列,在出现错误时将消息转发到该队列。然后分发器处理此消息,当达到重试限制时,消息将被转发到错误队列或由分发器安排重试。

NServiceBusv3.x

对于 TimeIncreaseNumberOfRetries 设置,SLR 策略仅 应用于工作线程.如果 SLR 配置在分发服务器上可用,则这些设置将被忽略。

当发生错误时,worker 根据 SLR TimeIncrease 设置安排重试,当相应的超时被触发时,消息被转发到分发器的传入队列,然后分发器将消息转发给可用的 worker。