Cool. It's good to see you're able to chip away at the problem. This is another section you may want to look at as well. Christian has good explanation of it: https://dzone.com/articles/activemq-understanding-memory
This is why when I'm starting on proof of concepts, spikes or protos I tend to stay with SEDA or direct until I know that I need the persistence or spooling. The tempUsage is where AMQ defines how much memory to use when writing non-persistent messages to hard disk cache. Sounds strange, I know, but it's just using it as an extension of RAM really. When you start paging or caching objects you're going to lose several orders of magnitude in speed. The objects get taken from nanosecond RAM speeds to write out at millisecond hard disk speeds and then it reads it again from millisecond hard disk speeds back up into RAM again. Here's another good link: http://activemq.apache.org/javalangoutofmemory.html <systemUsage> <systemUsage> <memoryUsage> <memoryUsage percentOfJvmHeap="70" /> </memoryUsage> <storeUsage> <storeUsage limit="100 gb"/> </storeUsage> <tempUsage> <tempUsage limit="50 gb"/> </tempUsage> </systemUsage> </systemUsage> -- View this message in context: http://camel.465427.n5.nabble.com/Best-Strategy-to-process-a-large-number-of-rows-in-File-tp5779856p5780169.html Sent from the Camel - Users mailing list archive at Nabble.com.