1

我无法在我的应用程序(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 获取(接收()),而不是远程

4

2 回答 2

1

我不是专家,但我认为您可以尝试使用批处理 - http://msdn.microsoft.com/en-us/library/ms788973.aspx

于 2013-09-19T14:45:38.120 回答
0

此博客讨论创建多个“QueuePeekCompleted”事件处理程序。它对我有用。

http://code-ronin.blogspot.com/2008/09/msmq-transactional-message-processing.html

于 2014-01-08T16:51:21.963 回答