我们有一个 WCF 服务,用于侦听队列 (MSMQ) 上的消息。它向我们的 Web 服务器 (REST API) 发送一个请求,该服务器返回一个 HTTP 状态代码。
如果状态码在 400 范围内,我们将丢弃该消息。这个想法是 400 范围错误永远不会成功(未经授权、错误请求、未找到等),因此我们不想继续重试。
对于所有其他错误(例如,500 - 内部服务器错误),我们将 WCF 配置为将消息放在“重试”队列中。重试队列上的消息会在一定时间后重试。这个想法是服务器暂时关闭,所以等待并重试。
WCF 的设置方式,如果我们FaultException
在服务契约中抛出一个,它会自动将消息放到重试队列中。
当消息导致 400 范围错误时,我们只是在吞下错误(我们只是记录它)。这可以防止重试机制触发;但是,最好将消息移动到死信队列。这样,我们可以通过向用户和/或系统管理员发送电子邮件来对错误做出反应。
有没有办法立即将这些坏消息移动到死信队列?