托管环境中的MSMQ + WCF

时间:2011-04-14 22:35:04

标签: .net wcf hosting msmq messaging

我们有几个系统要切换到使用某种类型的可靠架构,使用消息传递是我们想要的方式。

我们的想法是,我们将使用一些便宜的托管(共享,非专用)来拨打电话,但我们需要这些电话是可靠的。如果目标服务器不可用,则必须重试该消息几次才能失败。

访问网页>网站向队列添加请求>消息被传递到目标终点

这可以与共享主机一起使用吗?如果WCF + MSMQ不起作用,还有什么其他选择?

2 个答案:

答案 0 :(得分:1)

如果您能够将Server 2008用于具有netMsmqBinding端点的WCF服务来调用共享主机,那么您可以利用MSMQ 4增强的失败消息处理功能。只需很少的额外编码,WCF netMsmqBinding就可以配置为自动重试失败的消息,并将失败的消息从队列中移除到特殊的毒物队列,以便服务可以继续处理消息。您可以手动将病毒队列中的消息移回主服务器,以便在再次访问共享主机后重新处理,或者编写其他服务以自动处理此任务。 This article on MSDN应该是设置基于MSMQ的WCF服务和this article shows how the poison message处理工作的良好开端。

答案 1 :(得分:0)

在共享托管环境中,如果它们允许您使用MSMQ(甚至是您自己无法安装的rabbitQ),则由主机决定。

WCF over MSMQ通过WCF将消息写入队列,然后MSMQ处理消息到目标的传递,然后它使用消息激活WCF,就像您通过SOAP调用它一样。

底线是:您需要检查主机是否允许消息队列。如果他们这样做,请确保为他们添加安全性,以便服务器上的其他站点无法访问它们。

如果服务器上未安装MSMQ,则无法使用net MsmqBinding