NServiceBus在订阅者订阅时发送信息

时间:2011-07-06 06:43:11

标签: c# .net nservicebus

我刚刚开始使用NServiceBus,我已经启动并运行了一个非常基本的实现 - 就像PubSub示例应用程序一样。

我想要做的是在订阅者订阅时发送一些信息。

例如,假设我有一个包含已分类产品的数据库。我的发布者将每隔N秒检查一次数据库,并在将新产品添加到数据库时发送消息。

但是每个订阅者只对特定类别感兴趣,并且我希望在订阅时发送该类别,以便发布者知道检查数据库中该类别中的新产品。

类别是动态的,因此我无法为不同的类别创建不同的消息。因此,我假设所有订阅者都必须订阅相同的已发布IMessage

注意:我还希望使用此信息来过滤NServiceBus发送给订阅者的消息,但我想我会post that as a separate question

2 个答案:

答案 0 :(得分:4)

当订阅者请求订阅时,您可以实现IAuthorizeSubscriptions接口以在发布者处获得回调。如果您想在订阅请求中包含一些额外的元数据,则需要使用Bus.OutgoingHeaders - 然后您可以在发布者处查看该信息并决定如何处理它。

答案 1 :(得分:0)

我有一段时间没有使用NServiceBus,但我不认为NServiceBus有任何事件可以在订阅时通知你。

尽管如此,我认为你可能会在一个太精细的水平上接近你的解决方案。

您通常订阅业务通常感兴趣的事件。在您添加新产品的情况下。一个更简单的解决方案是简单地订阅说ProductAddedEvent并让您的订阅者忽略它不感兴趣的任何消息。

自我推销警告! :) ---我这里有一个FOSS ESB(仍然是CTP):http://shuttle.codeplex.com/

我们利用公交车各部分的管道,您已经让我知道在SubscriptionRequested上加入StartupPipeline事件。