NServiceBus在订阅者订阅时发送信息
本文关键字:信息 NServiceBus | 更新日期: 2023-09-27 18:01:23
我刚刚开始使用NServiceBus,我已经有了一个非常基本的实现和运行-很像PubSub样例应用程序。
我想做的是在订阅者订阅时发送一些信息。
例如,假设我有一个包含分类产品的数据库。我的发布者将每N秒检查一次数据库,并在新产品添加到数据库时发送消息。
但是每个订阅者只对一个特定的类别感兴趣,我想在他们订阅时发送该类别,以便发布者知道在数据库中检查该类别中的新产品。
分类是动态的,所以我不能为不同的分类创建不同的消息。因此,出于这个原因,我假设所有订阅者都必须订阅相同的已发布的IMessage
。
注意:我也希望使用此信息来过滤NServiceBus发送给订阅者的消息,但我认为我会将其作为一个单独的问题发布
您可以实现iauthorizessubscriptions接口,以便在订阅者请求订阅时在发布者处获得回调。如果希望在订阅请求中包含一些额外的元数据,则需要使用Bus。OutgoingHeaders——然后你可以在出版商那里查看这些信息,并决定如何处理它。
我已经有一段时间没有使用NServiceBus了,但是我不认为NServiceBus有任何事件可以在订阅发生时通知你。
尽管如此,我认为你的解决方案可能过于精细了。
您通常订阅业务通常感兴趣的事件。在您的示例中,当添加新产品时。一个更简单的解决方案是简单地订阅一个ProductAddedEvent
,并让您的订阅者忽略它不感兴趣的任何消息。
自我推销警告!:)——我有一个自由/开源软件ESB可用在这里(仍然是CTP): http://shuttle.codeplex.com/
我们为总线的各个部分使用管道,您给了我一个想法,在StartupPipeline
上包含SubscriptionRequested
事件。