【发布时间】:2011-06-26 13:29:59
【问题描述】:
假设我有一条 ClientRequestMessage 消息,其中包含对特定 Client 的请求。 Web 应用程序将生成这些请求,并且需要将它们发送到正确的Client 进行处理。我可以为此想到几个选项。
- 我可以有一个所有消息都发送到的队列,并且特定的客户端处理程序检查一个属性(如
ClientId)来决定他们是否关心它。不过,这在很多层面上对我来说都是错误的。 - 我可以向所有客户发布消息,他们可以决定在处理过程中是否关心它。这似乎是太多的流量,并且浪费了每个客户处理他们原本不应该关心的消息的时间。
- 我可以有客户端特定的队列,这些消息也被路由。这对我来说感觉最好,但我不确定如何去做。我想保持简单并避免使用特定于客户端的消息类型,但我不确定如何告诉 NServiceBus“客户端 A 将其发送到客户端 A 的队列,客户端 B 将其发送到客户端 B 的队列”。
所以我的问题是,最好的(最有效的?最容易管理的?)方法是什么?我很确定我需要使用分销商,但不是肯定的,所以我想问一下。
额外问题:
假设每个客户端都有多个处理程序。如何确保只有其中一个处理给定消息?我需要为每个客户分配一个分销商吗?
【问题讨论】:
-
您最终为此使用了什么解决方案?
-
我仍在努力解决。我对发布到所有方法不太满意,因为这些是特定于客户端的队列,理想情况下它们无法访问彼此的消息。
标签: nservicebus nservicebus-distributor