配置Rebus,以便如果消息包含工作进程id,则只有该工作进程将处理该消息

本文关键字:进程 消息 工作 Rebus 处理 id 如果 包含 配置 | 更新日期: 2023-09-27 18:25:38

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

我的问题是,我是否可以以任何方式设置Rebus,以便如果消息包含工作人员id(例如,工作人员2),则只有该工作人员才能处理该消息。如果消息中没有工作者id,则应以默认行为(见上文)为准。

配置Rebus,以便如果消息包含工作进程id,则只有该工作进程将处理该消息

没有办法(至少目前没有)实现您在这里描述的东西。

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

转发可以基于报头来完成,因此可以设置为以通用方式工作,而不必能够反序列化消息内容。

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