We are developing a predictive dialing application that logs in to 400 extensions and performs up to 600 simultaneous outbound calls.
We are using JTAPI and have registered CallListener to monitor call-related events.
However, we are experiencing several seconds of delay between the time an event is received (as reflected in JTAPI trace logs)
and the time the event is executed in our application.
We would like to request advice on how to resolve this delay and improve performance.
Details:
Additional Notes:
We are using JTAPI and have registered CallListener to monitor call-related events.
However, we are experiencing several seconds of delay between the time an event is received (as reflected in JTAPI trace logs)
and the time the event is executed in our application.
We would like to request advice on how to resolve this delay and improve performance.
Details:
- Avaya Environment Versions:
- AES Server Version: 10.2.0
- ACM Version: 10.2.0
- JTAPI Library: ecsjtapia.jar (IP-based connection) 10.2.0.0
- Situation When Delay Occurs:
- Delays occur when a large number of events are received simultaneously (high call volume processing).
- From JTAPI trace logs:
- Queue size temporarily increases during these periods.
- It takes a significant amount of time for events to move from the Putting stage (added) to the Getting stage (retrieved).
- The server does not appear to experience bottlenecks in CPU, memory, network, or disk usage.
- Current Measures Already Tried:
- Implemented multithreading for event handling to process CallListener events in separate threads.
- The JTAPI log output level was lowered to reduce the time spent on log writing, aiming to decrease processing time. However, this did not resolve the issue.
- Sample Code for Outbound Call Processing:
Below is a sample of the code used for predictive dialing of one call. This logic runs for up to 600 simultaneous calls using threads.
Code:
Provider provider = getProvider(); Call call = provider.createCall(); call.addCallListener(callListener); Address paramAddress = provider.getAddress(acdId); CallCenterCall ccc = (CallCenterCall) call; ccc.connectPredictive( null, paramAddress, dialNum, Connection.CONNECTED, maxRings, CallCenterCall.ANSWERING_TREATMENT_NONE, CallCenterCall.ENDPOINT_HUMAN_INTERVENTION );
Additional Notes:
- If there are specific JTAPI configurations or provider settings that are helpful in addressing this issue, please let us know.
- Are there known best practices or optimizations for handling high-volume predictive dialing with JTAPI in environments similar to ours?