如何有效地处理C#大型MSMQ数据调用SQL存储过程?

时间:2017-01-24 11:25:22

标签: c# sql-server stored-procedures ssis

我一直在广泛搜索以下处理大数据处理方法的解决方案或替代方法:

我们目前正在使用C#Windows服务(称之为Listener)来侦听TCP端口并将传入消息保存到MSMQ(消息队列)以确保没有数据丢失。同时,我们有另一个C #Windows服务(称为Decoder),它从MSMQ读取,处理多个线程中的数据并调用SQL存储过程来保存数据并进行额外的数据处理。

传入消息的速率约为10,000条消息/秒,每条消息由解码器单独处理,然后发送到SQL SP,但最近我们面临一些与性能和高服务器资源使用相关的问题(CPU和RAM)。

我们目前正在调查使用SQL Server集成服务(SSIS)作为替代方法来读取消息队列中的消息并执行处理和执行存储过程,但它似乎在消息队列方面有一些限制

现在我的问题是,鉴于我们必须使用SQL Server存储数据,您认为当前系统设计的更好替代方案是什么?

1 个答案:

答案 0 :(得分:0)

SSIS适用于ETL类型的工作负载 - 考虑批处理文件和跨系统同步数据(尤其是rdbs)。

处理大量需要一些按摩的消息,Kafka(https://kafka.apache.org/)和hadoop可能会在那里做得更好。即使在流程结束时,它也会将数据推送到SQL服务器,或者您通过ssis将其拉入。