配置Rebus,以便在消息包含worker ID时,只有该worker才能处理该消息

时间:2014-10-06 11:06:04

标签: c# bus rebus

我们正在运行Rebus作为批量系统的主干。我们有几个队列(即消息类型),可以由几个工作人员处理。每个工作者只能处理一种消息类型。因此,例如对于message_1,我们有2个可以处理此消息的worker(worker1和worker2)。目前是第一个 自由处理的工作人员将处理该消息。这是默认行为并且运行良好。

我的查询是,我是否可以以任何方式设置Rebus,以便如果消息包含工作者ID(例如对于工作者2),则只有该工作者应该能够处理该消息。如果消息中没有工作者ID,则应以默认行为(见上文)为准。

1 个答案:

答案 0 :(得分:1)

没有办法(至少目前不是这样)来实现你在这里描述的东西。

如果您对某些消息类型(或某些消息实例)有特殊要求,我建议您将这些消息转发给一个或多个可以处理这类消息的特殊端点。

转发可以基于标头完成,因此可以设置为以通用方式工作,而无需反序列化消息内容。

如果你告诉我更多关于你正在尝试解决的问题,也许我们可以找到一个更优雅的解决方案(或者至少一个可以用Rebus更优雅地解决的解决方案)。