I use a UDP inbound channel adapter to receive UDP datagrams. I know there is one thread that listens for UDP datagrams and that this thread delegates the processing to other threads (by default, to the 5 threads present in the pool).
I've written a simple application that sends UDP datagrams to a certain IP/Port at a high rate (the meanSendCount attribute reaches 480 messages/second). I've tried two different message channels: queue based and publish/subscribe.
I've profiled my application and I see that in the two cases, the thread that listens from the network (i.e. the one that's called task-scheduler-1) is always running. But the 5 threads that processes the incoming messages are not always running.
I'm trying to reach high performance (i.e. to be able to support a high rate of incoming UDP datagrams). In the queue-based model, the queue doesn't stop growing which is not acceptable. In the publish/subscribe model, I just see that the memory increases a lot (and I guess that if I leave the application running for a long time, I would see my heap size increasing "indefinitely").
Which parameters should I play with in order to increase performance?