有没有办法控制NServiceBus分发服务器如何分发消息?

有没有办法控制NServiceBus分发服务器如何分发消息?,nservicebus,Nservicebus,我正在使用一个医疗系统,该系统(除其他外)将处理患者数据的更新 我们将尝试将我们的系统扩展到多台机器,以提高性能 但是,我担心分发消息会导致更新顺序错误 以下是一个例子: 我的MSMQ上的前两条消息是患者的更新请求。第一个将中间名改为“鲍勃”,第二个将中间名改为“比尔”。(所以最后中间名应该是“比尔”。) 我有一个分发器设置,可以向MachineA和MachineB发送消息。两者都能够处理消息,但MachineA的速度要慢得多(或者有其他进程将其加载下来,或者由于其他原因速度较慢) 如果分销商将

我正在使用一个医疗系统,该系统(除其他外)将处理患者数据的更新

我们将尝试将我们的系统扩展到多台机器,以提高性能

但是,我担心分发消息会导致更新顺序错误

以下是一个例子:

我的MSMQ上的前两条消息是患者的更新请求。第一个将中间名改为“鲍勃”,第二个将中间名改为“比尔”。(所以最后中间名应该是“比尔”。)

我有一个分发器设置,可以向MachineA和MachineB发送消息。两者都能够处理消息,但MachineA的速度要慢得多(或者有其他进程将其加载下来,或者由于其他原因速度较慢)

如果分销商将第一条消息发送给MachineA,将第二条消息发送给MachineB,则MachineB消息将首先完成,并将名称更新为“Bill”。然后MachineA完成,中间名更新为“Bob”

因此,我以“鲍勃”而不是“比尔”作为中间名

我需要一种方法告诉分发服务器,这两条消息应该发送到同一台机器和同一个线程。从逻辑上讲,这并不难,但我需要一种方法插入分发服务器来完成

我想做的逻辑是这样的:分发者将保留队列正在处理的患者ID列表,然后检查该ID的新消息。如果任何队列正在处理该Id,则它要么等待完成,要么确保同一队列获得消息。)


或者,NServiceBus如何确保这些事务只按顺序提交?(我使用的是分布式事务。)

使用NSB.Send()消息时,您可以发送和排列IMessage。这将发送一批消息,这些消息将在单个事务的上下文中处理。消息应按顺序处理。

是否可以将这些消息打包到总线中。Send()。它需要一个IMessage数组。@AdamFyles-我想应该是这样的。这将涉及对我的客户机(发送数据流)进行批处理。但我想我能做到。我已经读到(在我发布了这个问题之后),使用数组将使它们保持在同一台机器和线程上(这正是我所寻找的)。如果您发布将它们作为数组发送的想法作为答案,我将接受它。