Мы создали инфраструктуру приложений на основе ActiveMQ.
Мы можем отправлять и получать сообщения просто отлично, и по большей части все работает довольно быстро и нормально.
Тем не менее, мы заметили, что если мы отправим пакет сообщений «за один раз», скажем, 5000 сообщений, то ActiveMQ довольно быстро доставит сообщения стороннему приложению на другом конце, и что это приложение будет обрабатываться также довольно быстро. , и что он также быстро поставит в очередь ответы брокеру, скажем, менее чем за минуту.
Но по какой-то причине наш VB.NET EXE, который в первую очередь инициировал сообщения, только, по-видимому, обрабатывает возвращаемые сообщения, которые он получает беспорядочно, иногда делая примерно одно в секунду, иногда делая перерывы на час или около того, а затем возвращаясь к один в секунду.
Origin (VB.NET EXE which we manage)
-> Broker (which we manage)
-> (3rd party app)
-> back to the same broker
-> back to the origin app.
Получатель ожидает события MessageListener из кода C#, загруженного из ActiveMQ, может быть, 9 месяцев назад:
Public Delegate Sub MessageListener(ByVal message As NMS.IMessage)
Member of: NMS
Я думаю, что происходит то, что MessageListener дает нам только одно сообщение (NMS.IMessage) для обработки, и это то, что мы обрабатываем.
Есть ли способ сказать: «В событии MessageListener посмотрите, есть ли другие сообщения в очереди прямо сейчас, и выполните их все»?