0

我正在尝试创建一个发布订阅外观,它在内部使用 NServiceBus 来实现 PubSub 功能。我在使用 NServiceBus 时遇到的问题之一是很多配置都是通过接口完成的。例如,发布者将实现 IWantToRunAtStartup。该发布者的端点将实现 IConfigureThisEndpoint 和 AsA_Publisher。

这是一个非常酷的特性,“流利”并且使代码易于阅读和理解。

但这使得创建立面变得困难。例如,实现 IWantToRunAtStartup 的基类将要求所有超类引用 NServiceBus.Host。

当然,需要引用 NServiceBus 完全打破了拥有外观的想法。在那一点上,立面的意义何在?

NServiceBus 是否可以将类型配置为不使用接口技术的端点、发布者、订阅者和消息?如果是这样,有人可以向我指出该文档(或者,甚至更好的示例?)

4

1 回答 1

1

设置发布/订阅不需要接口 IConfigureThisEndpoint、AsA_Publisher 和 IWantToRunAtStartup。

如果您没有在 NServiceBus.Host.exe 中托管您的端点,您需要做的就是告诉 NServiceBus 它应该如何存储订阅 - 在内存中、使用 msmq、关系数据库或在 RavenDB 中。只需选择适当的方法作为 Configure.With()... 初始化代码的一部分。

从 3.0 版开始,NServiceBus 支持定义对 NServiceBus 没有任何依赖关系的消息类型 -​​ 请参阅http://docs.particular.net/nservicebus/messaging/unobtrusive-mode

在任何情况下,订阅者中将处理发布的事件的代码都需要实现 NServiceBus 接口 IHandleMessages。

一般来说,我会说 NServiceBus 在理念上与其他服务总线有足够的不同,无论有没有门面,从一个服务总线移动到另一个服务总线都不会容易得多。

于 2012-05-26T09:49:33.687 回答