У меня проблема с обменом сообщениями (с 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