0
votes

We are using WSO2 ESB for pass-thru proxing to ActiveMQ. It appears WSO2 will use a new connection for each request which gives us less than desirable throughput (500+ concurrent users) on a single machine. After digging through the documentation we found out that you can use caching with JMSSender configuration. This does increase the throughput by caching at producer level (which will include connection and session caching) but with the drawback that if Activemq machine is bounced then WSO2 won't re-connect, to make it re-connect then caching has to be turned off, hence making it non-usable for us.

I am very surprised not being able to find any ActiveMQ connection pooling setting within WSO2 ESB. Is there not really any configuration for ActiveMQ connection pooling with WSO2 ESB or we are missing something obvious. Is creating you own connection pool factory the only option here?

Our configuration: WSO2 ESB 4.8.0 on it's own machine, ActiveMQ 5.9 on it's own machine

P.S We are aware of optimization of producer and activemq and have applied them, using nio protocol on broker, configuring transport level parameters on producer and broker, using vm:/ with both WSO2 and ActiveMQ on same machine and although that does increase throughput significantly but doesn't take us over the mark. We really need to figure our how to do connection pooling. We were expecting to process 10+k messages/second which contains a payload of 1.5k message.

Thanks for all your help.

1
have you solved your problem? I'm kinda have similiar problem here..Mari_Yaguchi
Nope, we ditched WSO2 ESB and went with Tomcat and ActiveMQ.Aurvoir

1 Answers

0
votes

IF WSO2 contains pooling at the producer level, and the problem is that it loses connections to ActiveMQ if it is down, then I would suggest that you check whether the failover: transport has been used when configuring the ActiveMQConnectionFactory. It is up to the library to reliably reconnect.

In terms of your target throughput, 10k msgs/s sounds a bit high assuming persistent messages. You should test whether or not ActiveMQ will handle it on your target hardware, regardless of how WSO2 is connecting to it. See the ActiveMQ Performance Module User Manual for details. If you can't, there are ways and means of getting performance up to that level, but that's a whole other story.