cancel
Showing results for 
Search instead for 
Did you mean: 

Maximum concurrencyof Asynchronous JDBC receiver channel

former_member460664
Participant
0 Kudos

Dear All,

I have a Proxy to JDBC asynchronous scenario where I would like to send 100000 ( 1 Lakh) customer details from SAP to SQL server database table. After executing the scenario I got the following errors.

Message processing failed. Cause: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Channel has reached maximum concurrency (5,000 concurrent messages) and no free resource found within 5,000 milliseconds; increase the maximum concurrency level

Channel has reached maximum concurrency (5,000 concurrent messages) and no free resource found within 5,000 milliseconds; increase the maximum concurrency level

Initially I have maintained Maximum concurrency = 1. After getting the error,  I have changed this to 5. While communication channel monitoring, Initially it has shown only Message processing started. I was unable to see message processing completed successfully. After one hour, it has shown message processing completed successfully. Really does it take that much of time? or  shall I do any other configurations? I have not maintained any poolWaitingTime under advanced mode of receiver channel configuration. This might be the problem? How many records can I send under one message by using a receiver jdbc adapter with maximum concurrency =1?  Any help....

Thanking You,

Regards,

Ashok.

Accepted Solutions (0)

Answers (2)

Answers (2)

rajasekhar_reddy14
Active Contributor
0 Kudos
Hi Ashok,
PI JDBC receiver adapter can handle max 5 concurrent parllel transactions,and it uses  5 thread ,i.e max concurency value always 5 and less than that,even if you put max number nto going to help by default it is 5.This is nothing to do with DBA.
If you increase JDBC receiver thread value then you can use that number in Max concurrency.
Coming to your issue,dont create mutlipel JDBC channels for JDBC receiver scenarios and try to use one chanel for all interfaces and set max concurency value 4.
If you created more channels then you end up getting this error oftenly.
set poolWait time in Advance tab like below.


poolWaitingTime
180000

Regards,

Raj

former_member460664
Participant
0 Kudos

Thanks for your reply.

How to increase JDBC receiver thread value?.  I have created multiple JDBC receiver channels. I have 9 master detail scenarios from SAP to database. Customer execute the master detail scenarios once or twice in a day. So the channels dont have to start all the times. For this case, if I use multiple channels, is there any problem? Even if I use multiple channels, should I maintain poolWaitingTime for all the channels? Please help me.

Regards,

Ashok.

Former Member
0 Kudos

Hello Ashok,

We can increase the threade value for the channels using the property of service XI AF Core: messaging.connectionDefinition. We can also see the thread count assiged to the channels by selecting Component monitoring --> Adapter engine -->  Engine status --> Additional data ,there we can see the tab of Maximum number of threads.

The default value of thread will be 5.We can increase the thread value using the property of service XI AF Core: messaging.connectionDefinition  and can verify after increasing the value at Adapter engine level.

If we change above parameter it impacts for all the adapter channels

Regards

Pradeep

baskar_gopalakrishnan2
Active Contributor
0 Kudos

Though your insert volume is  higher range, you can still handle with Maximum Concurrency to 5. Check with DBA that how much max connections we can establish through jdbc adapter connection pool.  Time it takes purely depends on the connections that adapter creates using connection pool to the database and executes your insert statement. At runtime it is purely based on the number of free threads available to make connections from the allowed setting in the adapter.  You can try configuring poolWaitingTIme too.  I would recommend to study the pattern of available threads at runtime and decide changing the number of connections.  Take help from Basis and DBAs. This setting might be your starting point .. example min connection=2 max= 15  maximum concurrency level = 5.