【发布时间】:2014-01-09 00:51:21
【问题描述】:
我无法在我的应用程序(C# 应用程序)中使用并行线程,因为每个 msmq msg 都是 sql 语句的数据
C# 应用程序使用 msmq 中的消息,然后对其进行处理。
我使用 msg.Recoverable=true,以防止服务器断电时数据丢失。 目前,它是事务性消息。
msmq消息(sql语句)必须按顺序处理(FIFO)
使用多线程消费是不行的,因为无法控制哪个线程消费和执行哪个sql语句。
目前,对于 490 KB 的 msmq 消息,Receive() 的速度约为 0.016 -0.032 秒,这使得大约 30-50 Tx/秒,这是不可接受的。
目前MSMQ接收是整个应用的瓶颈
服务器在 Windows Server 2008 R2 上
并且应用程序正在从本地服务器 MSMQ 获取(接收()),而不是远程
【问题讨论】:
-
邮政编码。您如何处理 SQL 语句?
-
先Peek,然后执行sql语句,如果sql语句执行成功,我执行Receive()。目前,Peek() 需要 0 秒,执行的 sql 语句需要 0 秒,Receive() 需要 0.016-0.032 秒。很明显,对于sql语句,必须先FIFO,(对于更新语句)
-
代码已经优化到最大,目前的问题是如何进一步提高MSMQ Receive()的性能
标签: msmq