We've built up an application infrastructure based on ActiveMQ.
We can send and receive messages just fine, and for the most part things are pretty fast and OK.
However, we've noticed that if we submit a batch of messages "at once", say 5,000 messages - that ActiveMQ will get the messages to the 3rd party application on the other end pretty quickly, and that this application will process also pretty quickly, and that it will en queue the replies back to the broker quickly also, say under a minute.
But for some reason, our VB.NET EXE that originated the messages in the first place only appears to be processing the return messages it receives erratically, sometimes doing about one per second, sometimes taking breaks for an hour or so and then going back to one per second.
Origin (VB.NET EXE which we manage)
-> Broker (which we manage)
-> (3rd party app)
-> back to the same broker
-> back to the origin app.
The Receiver is waiting for the event MessageListener from C# code downloaded from ActiveMQ maybe 9 months ago:
Public Delegate Sub MessageListener(ByVal message As NMS.IMessage)
Member of: NMS
I think what's happening is that MessageListener only gives us one message (NMS.IMessage) to chew on, and so that's what we process.
Is there some way to say "On a MessageListener event, please see if there are other messages on the queue right now and do them all"?