0

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

我正在研究 NServiceBus 但似乎我需要为每个侦听系统创建一个服务/可执行文件/webservice(创建 C# dll 和调用方法的工作量要少一些)而且我不确定 NServiceBus 是否可以处理基于预加载配置(从 db 加载)的动态端点。WCF 也是一种选择.. 它可以肯定地处理动态端点..

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

谢谢

4

2 回答 2

2

看来您正在寻找服务主机,而不是消息代理。如果是这样,Microsoft 推荐的方法是在 IIS 中托管您的 WCF 服务。他们仍然可以使用 MSMQ 作为传输,但服务本身将由 IIS 管理。IIS 从早期的 HTTP 服务器开始有了显着的发展,现在它更接近于应用程序服务器,可以选择传输(TCP、MSMQ、HTTP)、池、激活、生命周期策略等。

尽管我发现 WCF+MSMQ+IIS 有点过于复杂,但这是您在 Microsoft 领域所付出的代价。

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

于 2009-05-26T15:33:42.833 回答
2

如果您对在线解决方案感到满意,您可以查看具有队列服务总线的最新 .NET Services 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/

于 2009-04-21T13:43:04.787 回答