将NServiceBus重试配置为不影响ApplicationException

将NServiceBus重试配置为不影响ApplicationException,nservicebus,Nservicebus,我知道NServiceBus的重试机制主要用于连接问题或数据库死锁问题,这很好,我喜欢它 但是,我希望将NServiceBus的重试机制配置为,如果异常为typeof(ApplicationException),则不必进行重试。我的代码在业务规则被破坏时(比如客户被挂起)抛出这种异常,因此无论NServiceBus的快速重试机制重试此消息多少次,它都将失败。此场景要求用户对数据采取操作,然后使用ServiceInsight将消息重新排队以进行处理 可以这样做吗?我将重新考虑使用您的应用程序逻辑,

我知道NServiceBus的重试机制主要用于连接问题或数据库死锁问题,这很好,我喜欢它

但是,我希望将NServiceBus的重试机制配置为,如果异常为typeof(ApplicationException),则不必进行重试。我的代码在业务规则被破坏时(比如客户被挂起)抛出这种异常,因此无论NServiceBus的快速重试机制重试此消息多少次,它都将失败。此场景要求用户对数据采取操作,然后使用ServiceInsight将消息重新排队以进行处理



可以这样做吗?

我将重新考虑使用您的应用程序逻辑,在处理程序中使用Reply或Return通知用户此类错误,该处理程序应位于catch(ApplicationException)部分。然后用户更改数据并使用您的应用程序(而不是ServiceInsight)再次发送消息。在这种情况下,不要在catch块中重新抛出ApplicationException,这将阻止NServiceBus重试消息处理。

我将重新考虑使用应用程序逻辑,在处理程序中使用Reply或Return通知用户这类错误,它们应该位于catch(ApplicationException)部分。然后用户更改数据并使用您的应用程序(而不是ServiceInsight)再次发送消息。在这种情况下,不要在catch块中重新抛出ApplicationException,这将阻止NServiceBus重试消息处理。

我将重新考虑使用应用程序逻辑,在处理程序中使用Reply或Return通知用户这类错误,它们应该位于catch(ApplicationException)部分。然后用户更改数据并使用您的应用程序(而不是ServiceInsight)再次发送消息。在这种情况下,不要在catch块中重新抛出ApplicationException,这将阻止NServiceBus重试消息处理。

我将重新考虑使用应用程序逻辑,在处理程序中使用Reply或Return通知用户这类错误,它们应该位于catch(ApplicationException)部分。然后用户更改数据并使用您的应用程序(而不是ServiceInsight)再次发送消息。在这种情况下,不要在catch块中重新抛出ApplicationException,这将阻止NServiceBus重试您的消息处理。

在重试窗口中是否会出现另一条消息并更改业务数据的状态(使客户不再处于保留状态)?考虑到第一级重试窗口不到一分钟,出现这种情况的可能性非常小。如果真的发生了,那肯定是附带的,这并不是因为用户删除了客户保留状态,以便让事件顺利进行。但是,客户端在发送该消息之前不能检查客户是否处于保留状态吗?在重试窗口中是否会出现另一条消息并更改您业务数据的状态(使客户不再保留)?考虑到第一级重试窗口不到一分钟,发生这种情况的可能性非常小。如果真的发生,这肯定是偶然的,而不是因为用户删除了客户保留状态,以便让事件毫无例外地顺利进行。客户端不能在是否结束该消息?在重试窗口中是否会出现另一条消息并更改您的业务数据状态(使客户不再保留)的情况?考虑到第一级重试窗口不到一分钟,发生这种情况的可能性非常小。如果真的发生,这肯定是偶然的,而不是因为用户删除了客户保留状态,以便让事件毫无例外地顺利进行。客户端不能在是否结束该消息?在重试窗口中是否会出现另一条消息并更改您的业务数据状态(使客户不再保留)的情况?考虑到第一级重试窗口不到一分钟,发生这种情况的可能性非常小。如果真的发生,这肯定是偶然的,而不是因为用户删除了客户保留状态,以便让事件毫无例外地顺利进行。客户端不能在但我不同意。我认为ServiceInsight的重试功能非常适合我的需要。我基本上只有一个“最终用户”,即仅监视ServiceInsight的系统管理员,并指示组织中的各个人员采取必要的纠正措施。您的建议意味着,当ServiceInsight中已有重试逻辑和用户界面时,我将编写自己的重试逻辑和用户界面。只有在您的管理员能够监视ServiceInsight时,它才会起作用系统。如果他生病,休假,由于系统负载导致错误数量增加,解决方案将停止工作。我不同意。我认为ServiceInsight的重试功能非常适合我的需要。我基本上只有一个“最终用户”,即仅监视ServiceInsight的系统管理员,并指示组织中的各个人员采取必要的纠正措施。您的建议意味着,当ServiceInsight中已有重试逻辑和用户界面时,我将编写自己的重试逻辑和用户界面。只有在您的管理员能够监视ServiceInsight时,它才会起作用系统。如果他生病,休假,由于系统负载导致错误数量增加,解决方案将停止工作。我不同意。我认为ServiceInsight的重试功能非常适合我的需要。我基本上