HTTP Request/Reply on Correlation

When a process has a correlating incoming request with a reply (i.e. message triggered after process instance started) and it is possible that the incoming request activity is not in-progress and waiting for the message arrival then the server HTTP request layer thread will be blocked waiting for the process to reach that request activity. This can eventually result in all threads being blocked.

This can happen when messages are received for process instances that are already complete or that have not reached the request activity (or may not for a long period).

To avoid this situation it is recommended that an incoming request timeout is applied to the incoming request / reply activities in the process package.

If the process has completed or not reached the Event/Receive task then the server HTTP request layer will wait and block the thread.

If you have an in-flow incoming Request/Reply message activity that may be triggered when the process has completed or has not reached the activity, on the package properties, select the Resource tab, and for BPM Runtime Configuration add a value to Incoming Request Timeout (seconds).

Alternatively consider re-architecting to use a different pattern. For example:
  • An in-only Incoming Request Activity such as a receive task with in-only parameters, followed downstream by a Send-One-Way message activity that invokes a web service provided by the request-originating application.