我对消息传递(使用 MSMQ)有问题,这是快速生产者/慢消费者的一种变体。有没有办法在私有 MSMQ 队列中获得未使用的消息计数?我想用它来限制生产者。
我想在 MSMQ 中使用信号量范式,其中生产者应用程序仅在未完成的消息计数小于指定数量时才发送消息。
本质上,我想做类似以下的事情
///Producer pseudo-code
public void SendMessage(Message message, int totalMessagesSentCounter)
{
if (totalMessagesSentCounter % 1000 == 0)
{
while (outgoingQueue.GetMessageCount() > X) ///Is this possible?
{
Sleep(Y milliseconds);
}
}
outgoingQueue.Send(Message);
totalMessagesSentCounter++;
}
我的配置:Win XP/2003 和 MSMQ 3.0