Hi,
I have an integration that calls the target database through APIGEE. I have CDT of array which is array So the integration need to be called n number of times in parallel using MNI. I see the request sent to APIGEE for all the 11 records (test data had 11 records) available in the CDT sent at the same time but the response received by appian is taking more time even though APIGEE sent the response back under a second for all the 11 requests. Below are the apigee and appian logs. The duration increases for each thread in appian which seems strange when apigee sent the response in less than a second.
APIGEE log:
Request 1 till 11 received at 9:52:08 AM
Response 1 till 11 sent in 300 micro seconds at the max making it a response sent in less than a second
Appian process nodes
Request Started Completed Duration
Request 11 9:52:08 AM 9:52:16 AM 8.193 secsRequest 10 9:52:08 AM 9:52:16 AM 7.543 secsRequest 9 9:52:08 AM 9:52:15 AM 6.626 secsRequest 8 9:52:08 AM 9:52:14 AM 5.991 secsRequest 7 9:52:08 AM 9:52:13 AM 5.355 secsRequest 6 9:52:08 AM 9:52:13 AM 4.665 secsRequest 5 9:52:08 AM 9:52:12 AM 4.020 secsRequest 4 9:52:08 AM 9:52:12 AM 3.399 secsRequest 3 9:52:08 AM 9:52:11 AM 2.571 secsRequest 2 9:52:08 AM 9:52:10 AM 1.974 secsRequest 1 9:52:08 AM 9:52:09 AM 1.012 secs
Discussion posts and replies are publicly visible
Firstly, I'd challenge the design. Performance is greatly affected when making calls across the network. It would be better to make a single call to the API endpoint with your array of data and have it locally process that array. If it can't do that today then it's worth discussing with the API provider to see if they can make a change to support that.
Secondly, whilst Appian can make multiple concurrent calls in the way you describe there's no guarantee that the end point can handle the concurrency that you're inflicting upon it. It may queue your requests and so your desire for parallelism may be thwarted anyway and reduced to serialization. Again, a discussion with the API provider might open up some avenues for improvement.
Hi Stewart,
We did discuss it with the API provider but they refused to build the API to handle array input (to handle this parallel processing at their end) stating it would timeout (I know its weird but they are not ready to implement it). I saw the start time of all the thread in Appian were same and I also verified the target system start/end time for each of these calls. The start time was almost the same for all threads at their end with some milli seconds difference for few threads and the end time also were almost the same. Appian took more time to complete the integration configured as MNI.