使用具有动态端点的MSMQ实现订户/发布者系统

时间:2009-04-21 02:12:53

标签: c# wcf triggers msmq nservicebus

我正在尝试创建一个反馈系统,所有消息都会发布,然后发布回正确的子系统。我们正在大量使用队列,我想让用户代码尽可能干净。我想基于我进入反馈系统的消息ID进行切换并发布到其特定订户。我不想为每个订阅者提供服务来监听消息..我以为我可以为每个订阅者设置一个队列并触发调用com +组件..但我正在寻找一种更现代的方式。 。

我正在研究NServiceBus,但似乎我需要为每个监听系统创建一个服务/可执行文件/ web服务(它做一个C#dll并调用一个方法的工作少一点)我不确定是否NServiceBus可以根据预加载的配置(从数据库加载)处理动态端点。 WCF也是一个选择..它可以确保处理动态端点..

您认为新订阅系统的代码租赁量/可扩展性的最佳解决方案是什么?

由于

2 个答案:

答案 0 :(得分:2)

如果你对在线解决方案没问题,你可以看一下最新的.NET服务SDK for Windows Azure,它有队列服务总线http://www.microsoft.com/azure/netservices.mspx它依赖于WCF消息并支持路由等。一些博客文章关于这里http://vasters.com/clemensv/default.aspx

您可以尝试的另一个框架是MassTransit http://code.google.com/p/masstransit/

答案 1 :(得分:2)

您似乎在寻找服务主机,而不是消息代理。如果是这样,Microsoft推荐的方法是在IIS中托管您的WCF服务。他们仍然可以使用MSMQ作为传输,但服务本身将由IIS管理。 IIS早期作为HTTP服务器发展得很快,现在它更接近应用服务器,可以选择传输(TCP,MSMQ,HTTP),池化,激活,生命周期策略等。

虽然我发现WCF + MSMQ + IIS有点过于复杂,但这是你在微软领域付出的代价。

对于漂亮而简单的消息代理,您可以使用Active MQ而不是MSMQ,它将为您提供消息代理以及pub / sub。在.NET中使用起来相当容易,请查看此链接:http://activemq.apache.org/nms/