2014-07-03 61 views
0

我们正在研究使用NServiceBus进行数据集成。我们接收到带有数据的传入XML文件,需要将它们处理成多个子系统/数据库。我们最初的方法不是将数据放入消息正文中,而是将其提取到数据库,然后使用文件ID发送消息。NServiceBus。当消息太多时?

现在我正在考虑发送消息正文中的每一行数据(将字段复制到消息属性)并独立处理每一行。

我对这种方法感到担忧的是,这种设计是否可以用大量的输入数据维护?可以说每天有数百万条记录?生产这么多按摩是否有意义,或者最好是将它们分成几批?将数据放入消息中有意义还是使用ID更好?

+1

我想说batchas,而不是单一的邮件,如果有可能,但你为什么要使用消息的同步数据?正在捕捉事件并做一些其他工作?通常数据库有一套用于数据同步的工具。如果你走下消息传递路线,我会考虑消息作为命令或事件的作用是什么?并基于该决策模型将在消息中发生什么。 –

+1

NServiceBus本身能够轻松跟上每天数百万条消息。性能不应该成为你的主要关注点。 –

回答

1

Евгений,

会使用数据总线是一个选择?你得到这个文件,没有必要分解它,并将记录逐个发送到其他系统,因为它听起来像那些系统对整个文件感兴趣。此外,它将大大减少您必须发送/处理的消息数量。 看看这里的文档,这可能是你在找什么。 http://docs.particular.net/nservicebus/attachments-databus-sample

肖恩

0

我们的应用程序使用NServiceBus和MSMQ和我们处理50-100千邮件每隔我们使用单台服务器和一个单独的线程。

我会使用2种类型的消息:

  1. 分解得消息,这将读出的主记录ID和在单个消息
  2. 项目过程消息,我想去使用至少5个线程和分解它粘到插入数据库处理的类型

随意创建某种服务,在一个卡盘保存的初始数据到数据库的和简单地将记录的ID在数据库中作为消息类型#1,然后反过来会创建所有类型为2的消息。这确保了事务的隔离和使用。

你会成为幻想和使用英雄传奇,但你并不真的需要

http://docs.particular.net/nservicebus/sagas-in-nservicebus