我有一个 MSMQ 应用程序设置,其中数据被推送到一个队列中。最初我只有一个进程从中读取并处理它。由于体积增加了,我启动了多个进程来读取它,这基本上是我原始进程的一个新实例。我没有看到任何错误,但性能确实下降了。我的理解是,每个进程都会从队列中读取并接收尚未处理的新消息并继续处理。这是正确的还是多个进程可能最终处理相同的消息?
Dim q As MessageQueue
If MessageQueue.Exists(".\private$\MsgsIQueue") Then
q = New MessageQueue(".\private$\MsgsIQueue")
Else
'GS - If there is no queue then we're done here
Console.WriteLine("Queue has not been created!")
Return
End If
While True
Dim message As Message
counter += 1
Try
If q.Transactional = True Then
Thread.Sleep(2000)
End If
q.MessageReadPropertyFilter.ArrivedTime = True
message = q.Peek(TimeSpan.FromSeconds(20.0))
message.UseJournalQueue = True
message = q.Receive(New TimeSpan(0, 0, 60))
message.Formatter = New XmlMessageFormatter
(New [String]() {"System.String"})
ProcessMessage(message)
....