使用MSMQ绑定使WCF服务异步

时间:2011-06-17 12:17:22

标签: .net wcf tibco

是否有任何使用异步WCF端点的经历?

我试图理解,如果使用MSMQ绑定选项,我可以设置一个设置,其中客户端知道消息必须放在哪个队列中,并且如果wcf服务(最终在IIS中托管)离线,则可以透明地工作或者没有回应。

我真的很想得到这样的设置,因为这样当应用服务器重新联机时(我们将为分布式应用程序提供的众多应用服务器之一),它将处理队列中的所有传入消息并进行详细说明。

我更考虑那些有意义的延迟操作,如邮件管理(发送电子邮件),日志服务(将日志条目写入数据库,事件日志或通过电子邮件发送)以及类似的后端流程。 / p>

我的另一个选择是使用TIBCO业务和ems但是试图了解什么是更好的,如果简单的WCF将工作同步或异步只是改变绑定从让我们说netTCP到MSMQ ....

谢谢!

2 个答案:

答案 0 :(得分:4)

您必须区分异步和排队。

您可以使用基于客户端的异步调用,异步服务执行,OneWay消息传递和双工或简单的OneWay消息传递与NetTcpBinding进行异步消息传递。

但是,正如您所说,队列带来了额外的好处:弹性,负载均衡,以及根据MSMQ的版本,可扩展性。

您使用队列的两个主要问题是:

  1. 所有消息都必须是OneWay,因此如果客户需要知道处理是否成功,则必须将其设计到您的解决方案中
  2. 队列失败语义与标准服务失败有很大不同。需要检查死信队列和毒药消息队列是否有未处理的消息 - 再次需要在解决方案中设计

答案 1 :(得分:1)

如果你想要相当于Tibco EMS,那么WCF支持的唯一类似的开箱即用功能就是MSMQ。如果您已经拥有Tibco EMS基础设施但仍想使用WCF,则可以将这两者结合起来,因为Tibco为WCF提供EMS绑定(我从未测试过它,但我在客户的下载页面上看到过它)。