NServicebus消息不按顺序出现(即发送时)

时间:2010-05-26 14:11:06

标签: message-queue nservicebus

我们正在使用NService总线作为我们的消息传递框架。有时候消息并不像发送序列那样。有时候最后一条消息是先来的,而不是后面的第一条消息。

请帮助我谢谢

2 个答案:

答案 0 :(得分:3)

NServiceBus的性质并不保证将按照发送的顺序接收消息。每条消息都要独立处理。

如果某个操作只能在两条相关邮件到达后才能执行,那么您需要使用Saga

编辑以回复第一条评论:

你提到你正在以块的形式发送相同的消息。这是否意味着你有一个大的有效载荷,你必须分成多个部分,通过MSMQ传输?

如果是这样,您有几个选择:

  1. 将有效负载存储在数据库或文件系统中的带外,并且只在一条消息(ID或文件系统路径)中放入足够的数据以从消息处理程序加载数据。

    < / LI>
  2. 使邮件成为包含BundleID,PartNumber,TotalParts和PayloadChunk的MessagePart。然后,为MessagePart创建一个存储每个部分的传奇,当收到所有部分时,重新组合块并执行您需要的操作。当然,如果你需要将生成的大对象重新发送到总线上,这会很快变得烦人,因此带外选项看起来会更有吸引力。

  3. 在任何情况下,为什么任何MSMQ消息(而不仅仅是NServiceBus消息)可能无序到达有很多原因,因此您必须能够处理它。

答案 1 :(得分:1)

Bus.Sending Imessages的集合是否有效? NServiceBus允许批量处理消息