Transactions n服务总线。当有太多的消息时?

Transactions n服务总线。当有太多的消息时?,transactions,integration,nservicebus,messaging,Transactions,Integration,Nservicebus,Messaging,我们正在研究使用NServiceBus进行数据集成。我们接收带有数据的传入xml文件,并需要将它们处理成几个子系统/数据库。我们最初的方法不是将数据放在消息体中,而是将其提取到数据库中,然后发送带有文件ID的消息 现在我考虑发送消息体中的每一行数据(将字段复制到消息属性),并独立处理每一行 我关心的是,这种方法是否能够在大量传入数据的情况下维护设计?比如说每天有数百万张唱片?生产这么多按摩品有意义吗?或者最好把它们分批生产?将数据放在消息中有意义吗,还是使用IDs更好? 您是否可以选择使用数据总

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

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

我关心的是,这种方法是否能够在大量传入数据的情况下维护设计?比如说每天有数百万张唱片?生产这么多按摩品有意义吗?或者最好把它们分批生产?将数据放在消息中有意义吗,还是使用IDs更好?

您是否可以选择使用数据总线?如果你得到了这个文件,就不需要对它进行分解并将一条记录一条记录地发送给其他系统,因为听起来这些系统对整个文件都感兴趣。此外,它将大大减少您必须发送/处理的消息数量。 查看这里的文档,它可能就是您要查找的


Sean

我们的应用程序使用NServiceBus和MSMQ,我们使用一台服务器和一个线程,每天处理5万到10万条消息

我将使用两种类型的消息:

  • 分解消息,它将读取主记录ID并将其分解为单个消息
  • 项目进程消息,其中我将使用至少5个线程并坚持插入数据库处理类型
  • 您可以随意创建某种服务,将初始数据保存在一个卡盘中到数据库中,并将数据库中记录的ID作为消息类型#1传递,然后该消息类型将创建类型2的所有消息。这确保了事务的隔离和使用

    你可以变得花哨,使用传奇,但你真的不需要


    如果可能的话,我会说batchas而不是单个消息,但是为什么要使用消息来同步数据呢?正在捕获事件并进行其他工作吗?数据库通常有一组用于数据同步的工具。如果你沿着消息传递路线,我会考虑什么信息作为命令或事件?基于该决策模型,message.NServiceBus本身能够轻松地跟上每天数百万条消息的速度。在这里,性能不应该是您最关心的问题。