我正在考虑使用Service Broker在两个.NET应用程序之间进行消息传递,其中一个应用程序需要可靠地向另一个应用程序发送消息。关于如何看待发起人方面,我对此非常了解。
但是,消费者应用程序需要从队列中加载消息,进行一些处理,然后确认处理进行得很顺利。处理可能会失败,在这种情况下我需要重试该消息。我还需要保留为历史目的而处理的所有消息。
据我所知,当我进行RECEIVE时,消息会从队列中删除。那么消费者应用程序在发生故障时应该做些什么呢?再次将消息推送到队列中?我可以将邮件标记为“处理中”,然后在我的任务成功完成后将其删除吗?
我如何使用Service Broker对此进行建模?
答案 0 :(得分:3)
您可以在事务中接收并在发生错误时回滚事务。请注意,内置的有害消息处理将在给定消息的5次此类回滚后禁用队列。