【问题标题】:NServiceBus sending information when a subscriber subscribesNServiceBus 在订阅者订阅时发送信息
【发布时间】:2011-07-06 06:43:11
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

标签: c# .net nservicebus


【解决方案1】:

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

【讨论】:

  • 谢谢 Udi,今晚我会考虑这样做。你能指出我做你建议的任何文档或例子吗?另外,你对我的另一个问题有什么可以衡量的吗?欣赏它! :-)
【解决方案2】:

我已经有一段时间没有使用 NServiceBus,但我认为 NServiceBus 没有任何事件可以在订阅发生时通知您。

尽管如此,我认为您的解决方案可能过于精细。

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

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

我们为总线的各个部分使用管道,您给了我一个想法,在StartupPipeline 上包含一个SubscriptionRequested 事件。

【讨论】:

  • 谢谢埃本。不幸的是,我的例子就是这样,一个例子。实际问题要复杂得多,我只是使用示例来简化我想要实现的目标。
  • 也许您可以在问题中提供更多信息。您可能会遇到需要实现某种路由器而不是 pub/sub 的情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多