我们有几个系统,我们要切换到使用某种类型的可靠架构,使用消息传递是我们想要做到的。
我们的想法是,我们将使用一些便宜的主机(共享的,而不是专用的)来打电话,但我们需要通话是可靠的。如果目标服务器不可用,则在失败之前必须重试几次消息。
网页被访问>站点向队列添加请求>消息被传递到目标端点
这在共享主机上是否可行?如果WCF + MSMQ不起作用,还有其他选择吗?
如果您能够使用Server 2008为带有netMsmqBinding端点的WCF服务调用共享主机,那么您可以利用msmq4增强的失败消息处理特性。只需少量额外的编码,就可以配置WCF netMsmqBinding自动重试失败的消息,并将失败的消息从队列中删除到一个特殊的有毒队列中,以便服务可以继续处理消息。一旦共享主机再次可访问,您可以手动将消息从有毒队列移回主队列,以便重新处理,或者编写另一个服务来自动处理此任务。这篇关于MSDN的文章应该是设置基于MSMQ的WCF服务的一个良好开端,并且这篇文章展示了有毒消息处理是如何工作的。
在共享的托管环境中,这取决于主机是否允许您使用MSMQ(甚至是您无法自己安装的rabbitQ)。
WCF over MSMQ的工作原理是WCF将消息写入队列,然后MSMQ处理消息到目标的传递,然后它用消息激活WCF,就像你通过SOAP调用它一样。
底线是:您需要检查您的主机是否允许消息队列。如果有,请确保您为它们添加了安全性,以便服务器上的其他站点无法访问它们。
如果MSMQ没有安装在服务器上,那么你不能使用net MsmqBinding