我正在使用医疗系统(其中包括)将处理患者数据的更新。
我们将尝试将系统扩展到多台计算机以提高性能。
但是,我担心分发邮件可能会导致更新错误。
这是一个例子:
MSMQ上的前两条消息是患者的更新请求。第一个将中间名称更改为“Bob”,第二个将中间名称更改为“Bill”。 (所以最后中间名应该是“比尔”。)
我有一个distrubtor设置来向MachineA和MachineB发送消息。两者都能够处理消息,但MachineA是一个慢得多的机器(或者有其他进程加载它或由于其他原因而变慢)。
如果经销商将第一条消息发送给MachineA,第二条消息发送给MachineB,则MachineB消息将首先完成,并将名称更新为“Bill”。然后MachineA完成,中间名称更新为“Bob”。
所以我最终以“Bob”为中间名而不是“Bill”。
我需要一种方法告诉经销商这两条消息应该转到同一台机器和同一个线程。逻辑上明智不难做到,但我需要一种方法来插入经销商做到了。
我想要做的逻辑是这样的:分发者会保留队列正在处理的患者ID列表,然后检查该ID的新消息。如果任何队列正在处理该Id,那么它要么等待它完成,要么确保相同的队列获得该消息。)
或者,NServiceBus是否确定这些事务只会按顺序提交?(我正在使用分布式事务。)
答案 0 :(得分:1)
当您使用NSB发送()消息时,您可以发送和IMessage数组。这将发送一批将在单个事务的上下文中处理的消息。消息应按顺序处理。