【问题标题】:Shouldn't poison message services handle generic messages?中毒消息服务不应该处理通用消息吗?
【发布时间】:2012-11-25 21:41:03
【问题描述】:

好的,所以我一直在尝试绕过队列 -> 死信队列 -> 死信队列的毒子队列 -> ?

现在,就as I understand 而言,如果消息处理失败或者如果接收者不支持对消息的操作,则可以将消息发送到毒队列。 Most of the articles I've found show 以与主服务相同的合同实现毒服务。如果错误是合约不支持所提供的消息,那是否会将有毒消息队列中的消息放入毒消息队列

拥有一个可以处理毒物队列中任何东西的处理程序不是更有意义吗?下面假设一个 WCF 消息,它可能也不安全(并且完全未经测试),但是有没有办法进行万无一失的毒物队列处理?我越是尝试通过排队来思考边缘情况,我就越觉得不可能有一个完整的系统来处理所有可能性。

    [OperationContract(IsOneWay = true, Action = "*")]
    [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
    public void CatchAll(Message message)
    {
        // Log somewhere?
    }

另一个想法是有一个触发器,将所有消息从中毒队列移回死信队列以再次处理 - 这可能会再次中毒并无限循环。

我想具体的问题是......人们如何处理死信队列中的有毒消息?一般的问题是 - 你到底是如何处理 MSMQ 中的所有情况的?

【问题讨论】:

    标签: wcf msmq


    【解决方案1】:

    据我所知,MsmqMessage<T> 类型可以与任何 WCF msmq 绑定一起使用。

    因此,如果您指定MsmqMessage<String> 的接收类型,这应该涵盖所有基础。您将收到作为字符串的消息。你如何处理字符串中的内容是另一回事......

    【讨论】:

    • 所以你的意思是不要费心执行原来的合同?
    • 在你的毒物处理器中是的。
    猜你喜欢
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多