Description
This JIRA discusses the possible improvement of the JDBC store as a follow-up of the QPID-4763 issue. Since revision 1470549 the Java Qpid Broker can work with JDBC compliant database store.
However, our tests of the JDBC store (MySQL database was used as the backend) showed that under the heavier load from the client (sending couple of 1000 persistence messages) the broker looses connection to the database. Closer examination revealed that it was caused by the exceeded number of incoming connections from the broker to the database server for which the server was configured. The JDBC store was initiating the new connection many times, instead of reusing already established one.
We have extended the Java Broker for JDBC connection pool management using the BoneCP library.
This library manages the connections returned by the underlying JDBC driver, so available connections are reused by the broker.
Plugging the connection pooling library is quite straight-forward as you can see from the attached patch. With the connection pooler the JDBC store works flawlessly (tested with MySQL) in our testing configuration.
If using the above library would not be applicable because of some reason, does it make sense to implement the connection pooling management directly into the broker?
Thank you,
Michal