NServiceBus 4.4.2 我如何在配置中设置 TimeoutPersisterReceiver 时间跨度
NServiceBus 4.4.2 how do i set the TimeoutPersisterReceiver timespan in config
如何增加 TimeoutPersisterReceiver
的时间跨度?它目前在开火前重试约 1 分钟。我查看了文档,但看不到它的配置设置。
我们遇到了一些网络问题,导致服务无法与数据库对话,导致 RepeatedFailuresOverTimeCircuitBreaker
自行武装。
INFO NServiceBus.CircuitBreakers.RepeatedFailuresOverTimeCircuitBreaker [(null)] - The circuit breaker for TimeoutStorageConnectivity is now in the armed state
数据库最终会重新联机,但到那时断路器已经启动并且总线已被处理掉。我需要增加 NServiceBus.Timeout.Hosting.Windows.TimeoutPersisterReceiver
.
的时间跨度
NServiceBus.CircuitBreakers.RepeatedFailuresOverTimeCircuitBreaker [(null)] - The circuit breaker for TimeoutStorageConnectivity will now be triggered
FATAL NServiceBus [(null)] - Repeated failures when fetching timeouts from storage, endpoint will be terminated.
您可以尝试在实现 IWantToRunWhenBusStartsAndStops 的 class 中配置它,并使用 TimeoutPersisterReceiver 的 SecondsToSleepBetweenPolls 属性。
但是,我要补充一点,public 对此配置选项的访问权限在更高版本中已被删除,我不是 100% 确定原因。可能有龙。参见 http://bit.ly/1ToyOHb (GitHub)。
断路器行为
研究代码后,您似乎可以通过 TimeoutPersisterReceiver.SecondsToSleepBetweenPolls
配置超时轮询间隔,但这并不重要。
嵌入式断路器配置无法调整。如果发生错误,它是 armed 并且如果在 2 分钟内没有成功的轮询成功,将触发断路器操作,这将调用引发严重错误。
增加轮询间隔在这里没有帮助。如果您将轮询间隔设置为超过 2 分钟,断路器将始终 启动,从而触发操作。
不幸的是,除了构建您自己的完全删除断路器的版本之外,您无能为力。
当您的数据库服务器进行故障转移时,此行为可能会导致问题。
严重错误处理
解决这种情况的唯一可能解决方案是挂接到关键错误处理程序。然后你知道发生了这样的问题并且可以关闭应用程序,因为我怀疑你目前是自托管的。
您也可以尝试创建一个全新的总线实例,然后 'swap' 用新的总线实例创建损坏的实例,但这是一项非常艰巨的任务,我建议 退出您的应用程序.
如何增加 TimeoutPersisterReceiver
的时间跨度?它目前在开火前重试约 1 分钟。我查看了文档,但看不到它的配置设置。
我们遇到了一些网络问题,导致服务无法与数据库对话,导致 RepeatedFailuresOverTimeCircuitBreaker
自行武装。
INFO NServiceBus.CircuitBreakers.RepeatedFailuresOverTimeCircuitBreaker [(null)] - The circuit breaker for TimeoutStorageConnectivity is now in the armed state
数据库最终会重新联机,但到那时断路器已经启动并且总线已被处理掉。我需要增加 NServiceBus.Timeout.Hosting.Windows.TimeoutPersisterReceiver
.
NServiceBus.CircuitBreakers.RepeatedFailuresOverTimeCircuitBreaker [(null)] - The circuit breaker for TimeoutStorageConnectivity will now be triggered
FATAL NServiceBus [(null)] - Repeated failures when fetching timeouts from storage, endpoint will be terminated.
您可以尝试在实现 IWantToRunWhenBusStartsAndStops 的 class 中配置它,并使用 TimeoutPersisterReceiver 的 SecondsToSleepBetweenPolls 属性。
但是,我要补充一点,public 对此配置选项的访问权限在更高版本中已被删除,我不是 100% 确定原因。可能有龙。参见 http://bit.ly/1ToyOHb (GitHub)。
断路器行为
研究代码后,您似乎可以通过 TimeoutPersisterReceiver.SecondsToSleepBetweenPolls
配置超时轮询间隔,但这并不重要。
嵌入式断路器配置无法调整。如果发生错误,它是 armed 并且如果在 2 分钟内没有成功的轮询成功,将触发断路器操作,这将调用引发严重错误。
增加轮询间隔在这里没有帮助。如果您将轮询间隔设置为超过 2 分钟,断路器将始终 启动,从而触发操作。
不幸的是,除了构建您自己的完全删除断路器的版本之外,您无能为力。
当您的数据库服务器进行故障转移时,此行为可能会导致问题。
严重错误处理
解决这种情况的唯一可能解决方案是挂接到关键错误处理程序。然后你知道发生了这样的问题并且可以关闭应用程序,因为我怀疑你目前是自托管的。
您也可以尝试创建一个全新的总线实例,然后 'swap' 用新的总线实例创建损坏的实例,但这是一项非常艰巨的任务,我建议 退出您的应用程序.