2012-12-07 247 views
1

好吧,所以我一直试图围绕队列 - >死信队列 - >死毒队列中的毒药subqueue - >?不应该毒害消息服务处理通用消息吗?

现在,就as I understand,消息可以,如果他们不能处理或被发送到毒药队列如果在消息中的操作不被接收机支撑。 Most of the articles I've found显示实施与主要服务相同合同的毒药服务。 是不是会将有毒的消息放入有毒消息队列转换成有害消息队列如果错误是合同不支持所提供的消息?

拥有一个可以处理毒队列中的任何事情的处理程序会更有意义吗?下面假设一个WCF消息,它可能不安全(并且完全未经测试),但是有没有办法让傻瓜式的毒性队列处理?我试图通过排队边缘案例来思考的越多,我越觉得不可能有一个能够处理所有可能性的完整系统。

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

另一种认为是有一个移动的所有消息从有害队列放回死信队列再次被处理的触发器 - 这可能会再次毒害和无限循环。

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

回答

1

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

所以如果你指定一个接收类型MsmqMessage<String>这应该涵盖所有的基地。您将以字符串的形式收到该消息。如何处理字符串中的内容是另一回事......

+0

那么你是不是打算执行原始合同? – zimdanen

+0

在你的毒药处理程序中是的。 –

+0

谢谢;这就说得通了。 – zimdanen