The receiver communication channel uses 'Maximum Concurrency' and 'poolWaitingTime' parameters while negotiating a JDBC connection to a database. The default values of this parameters are 1 and 5000 ms respectively.
Maximum Concurrency is the number of parallel database connections that receiver channel can open and poolWaitingTime is the amount of time, in ms, the channel waits for a free connection when all the parallel connections are being used.
When Maximum concurrency is set to 1, poolWaitingTime should be set to 0. This makes sure the channel can wait infinitely to get the DB connection. This will prevent messages to get into error state with error similar to this:
Delivery of the message to the application using connection JDBC_http://sap.com/xi/XI/System failed, due to: com.sap.aii.af.ra.ms.api.RecoverableException: Channel has reached maximum concurrency (5,000 concurrent messages) and no free resource found within 5,000 milliseconds; increase the maximum concurrency level.
When maximum concurrency is set to > 1 poolWaitingTime should be set to an optimum value. Setting maximum concurrency to a very large number can affect other JDBC receiver channels. Check this linked post to prevent a receiver channel from being a bottleneck to other channels.
Setting poolWaitingTime Parameter:
To set poolWaitingTime, enable the 'Advanced Mode' option in 'Additional Parameters' tab and add the parameter poolWaitingTime with an appropriate value.
In case the JDBC communication channels are not polling at all, check this post out: http://www.sapnwnewbie.com/2011/05/sap-xi-jdbc-communication-channels-not.html
Thanks for reading. Please consider sharing it in your network of friends if you think this will help them.