Я не использовал сам MSMQ, но у меня есть рецепт, который я нашел полезным.
Вместо одной очереди у вас есть две очереди - по одной в каждом направлении.
«Производитель» потребляет элемент из очереди, поступающей от потребителя, и отправляет новое сообщение потребителю. Каждый раз, когда потребитель потребляет, он помещает новое сообщение в очередь для производителя.
Таким образом, «токен» предоставляет обратную связь от потребителя к производителю, которая ограничивает производителя до скорости потребителя.
Ловкость, если это уместно, заключается в том, что сообщения просто возвращаются, а не новые распределения каждый раз. Если его однопроцессный процесс и данные сообщения имеют большой и фиксированный размер, это само по себе может стать мощным драйвером для принятия этого проекта.