使用 C# 和 MassTransit 处理文件
File processing with C# and MassTransit
我已经阅读了很多关于 MassTransit 的文章并进行了试验。但是我有一个场景,我不知道 MassTransit 是否适合它。如果对 MT 有很好了解的人能在这件事上给我建议,我将不胜感激。
1- 我必须处理具有 5 种不同布局或数据结构的 CSV 文件。
2- 每个文件可能有一百万行。
3- 行应按顺序处理 (FIFO)。因为顺序很重要。
4- 处理一行由多个步骤组成,如从数据库中获取相关信息、检查、计算、分析并保存到数据库中。
5- 我有自己的线路对象来通过管道中的不同步骤,不希望 MassTransit 对我的线路对象进行序列化-反序列化。
6- 我应该能够轻松地在管道中启用/禁用我自己的中间件。
7- 每个中间件都可以有自己独特的配置信息。
8- 它应该每秒处理大约 10000 行,而无需在普通计算机上花费时间在我的中间件上。像 Intel i7 四核、8GB RAM、SSD。所以吞吐量应该在每秒 10000 条消息左右。
MassTransit是否适合这种场景?
例如,
通过使用 Quartz-MT 集成制作 5 个不同的客户端-消费者 windows 服务,因此每个消费者将处理不同的文件。
每个文件都经过内存管道,我将在管道中为我自己的行处理步骤添加一些 MT 中间件,当所有行都得到处理时,将文件标记为已处理并等待新文件。
我知道我可以花一周的时间来构建一个原型并尝试自己测试它,但我希望听到专家的一些建议,以了解我是否以正确的方式使用正确的工具。
不幸的是,最近几周没有人回应我的问题。同时,我自己也做了一些尝试,发现 MassTransit 并不适合这份工作。
据我所知,有以下几个原因:
1-性能,性能和性能。仅此一项对我来说就是一个亮点。
我改变了很多次不同的配置,但从来没有超过 50 line/second!
在默认配置下,它甚至还不到 5 line/second!
只有5步,每步只做两次简单的计算。
没有 MassTransit 的完全相同的步骤可以处理近 15000 line/second.
2- 序列化是必须的,无法禁用它。我想这是它这么慢的原因之一。
这些原因足以忘记公共交通并寻找其他解决方案。
我已经阅读了很多关于 MassTransit 的文章并进行了试验。但是我有一个场景,我不知道 MassTransit 是否适合它。如果对 MT 有很好了解的人能在这件事上给我建议,我将不胜感激。
1- 我必须处理具有 5 种不同布局或数据结构的 CSV 文件。
2- 每个文件可能有一百万行。
3- 行应按顺序处理 (FIFO)。因为顺序很重要。
4- 处理一行由多个步骤组成,如从数据库中获取相关信息、检查、计算、分析并保存到数据库中。
5- 我有自己的线路对象来通过管道中的不同步骤,不希望 MassTransit 对我的线路对象进行序列化-反序列化。
6- 我应该能够轻松地在管道中启用/禁用我自己的中间件。
7- 每个中间件都可以有自己独特的配置信息。
8- 它应该每秒处理大约 10000 行,而无需在普通计算机上花费时间在我的中间件上。像 Intel i7 四核、8GB RAM、SSD。所以吞吐量应该在每秒 10000 条消息左右。
MassTransit是否适合这种场景?
例如,
通过使用 Quartz-MT 集成制作 5 个不同的客户端-消费者 windows 服务,因此每个消费者将处理不同的文件。
每个文件都经过内存管道,我将在管道中为我自己的行处理步骤添加一些 MT 中间件,当所有行都得到处理时,将文件标记为已处理并等待新文件。
我知道我可以花一周的时间来构建一个原型并尝试自己测试它,但我希望听到专家的一些建议,以了解我是否以正确的方式使用正确的工具。
不幸的是,最近几周没有人回应我的问题。同时,我自己也做了一些尝试,发现 MassTransit 并不适合这份工作。 据我所知,有以下几个原因:
1-性能,性能和性能。仅此一项对我来说就是一个亮点。 我改变了很多次不同的配置,但从来没有超过 50 line/second! 在默认配置下,它甚至还不到 5 line/second!
只有5步,每步只做两次简单的计算。 没有 MassTransit 的完全相同的步骤可以处理近 15000 line/second.
2- 序列化是必须的,无法禁用它。我想这是它这么慢的原因之一。
这些原因足以忘记公共交通并寻找其他解决方案。