【问题标题】:Is it safe to call bus.Publish from an NServiceBus handler when using distributor?使用分发服务器时从 NServiceBus 处理程序调用 bus.Publish 是否安全?
【发布时间】:2016-04-15 22:35:49
【问题描述】:

一个服务器由 master+worker 端点组成另一个服务器由 worker 组成的横向扩展场景中,调用 bus.Publish 是否安全 从端点完成处理给定事件时? (请记住 bus.Publish 可以从位于工作服务器上的端点调用)。

我最初的反应是它不安全,因为这听起来像是你永远不应该从网络服务器调用发布的例子......

我们当然可以使用 WCF 包装器并调用仅存在于 master+worker 端点服务器上的服务,但是有人有这方面的实际经验吗?

谢谢!

【问题讨论】:

  • 您到底关心什么?

标签: c# wcf nservicebus publish-subscribe nservicebus-distributor


【解决方案1】:

每个逻辑订阅者都有一个接收端点。如果您使用分发器,这是分发器端点或分发器队列,如果您愿意的话。因此订阅者将订阅特定事件并指定它的接收端点。发布者将不知道它是单个端点实例,还是接收消息的分发者。

然后分发者将消息发送给准备好处理消息的工作人员。

对此进行了更详细的解释,并在此页面上提供了一些清晰的图像:http://docs.particular.net/nservicebus/scalability-and-ha/distributor/publish-subscribe

【讨论】:

    【解决方案2】:

    最后,我们将 Web 应用程序设为“仅发送端点”,这实质上意味着它们只是通过选定的传输(在我们的例子中为 MSMQ)直接将命令发送到端点。一旦我们需要扩展,我们最终将实施“Sender Side Distribution”而不是利用分发器。

    来自 NSB 支持团队:“如果您添加更多端点,则发送方分发是可行的方法。它充当在发送方运行的循环机制,当你扩大规模。”

    https://docs.particular.net/transports/msmq/sender-side-distribution

    如果您只需要从网站或其他应用程序/服务中触发并忘记消息,我会推荐这种方法 - 它非常简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 2023-03-13
      • 2015-12-18
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      相关资源
      最近更新 更多