1 of 1 people found this helpful
option 1 will probably give you a better throughput but this all depends on your disc speed, network speed and whether or not the messages are persistent (as well as some other configuration, ack mode, producer send rate of your app etc). If your messages are persistent then the disc speed will ultimately be the bottle neck, other wise network speed will be. I would go for option 1 and pool your sessions/producers and load test with a pool of 1 (which is basically option 2) and then find the most performant pool size.
Thanks Andy; we'll try that out, then. Am I correct in thinking that using multiple sessions/producers will open up multiple connections to the server? I recall reading somewhere in the documentation that a single ClientSessionFactory has a default of 8 connections.
FWIW, we are using acks and persistent messages, so that certainly affects the throughput. The reason I brought this up is that we are observing many threads in our app blocked in ClientProducer code without obvious network/disk bottlenecks on the server side.