Hello all,
I am currently studying OSB Thread Management on different cases and I have found this very useful article: https://blogs.oracle.com/reynolds/entry/following_the_thread_in_osb explaining the most common cases of Message Flows.
However, there are some more complicated cases of flows that I am having difficulty understanding on how OSB assigns/allocates/re-uses threads. Specifically, I am trying to understand the following cases
1. Proxy Service performs a Service Callout to a Proxy Service that finally routes to a Business Service.
In this case, I understand that “The pipeline processor will block the thread until the response arrives asynchronously”. Does this mean that a new thread is used to execute the request pipeline of the 2nd Proxy Service? On the other side, the article above states that “Request Pipeline of callee executes on requestor thread”. Which one of these statements applies in this case? From what Work Manager the thread that executes the request Pipeline of the 2nd Proxy comes from?
2. Proxy performs service Callout to a Split-Join
In this case, I guess that the thread of the request pipeline is blocked and new threads are allocated to perform the parallel calls of the split join, am I right? Are these new threads, coming from the Split-Join’s WM? Does each one of them must notify the blocked thread of the request pipeline, in order for the pipeline request flow to continue? Any comment on how Split-Joins uses threads would be appreciated.
3. Proxy routes to a split join that finally routes a Proxy Service.
This scenario is used by a customer, in order to perform multiple parallel calls on a second Proxy Service (something like a loop). Is the thread that performs the Route released back to the pool it came from as soon as the Route is called? Are new threads allocated (from the WM assigned to the Split-Join) in order to perform the parallel calls? Is the thread that is used to execute the Response Pipeline of the first Proxy subject to the Dispatch Policy on the Split-Join?
Your comments on my questions above would be very helpful in order to clarify these cases. In addition, any suggestions or good practices on how to assign Work Managers for above scenarios would be appreciated, too. I am mainly interested in answers regarding 12.2.1.1 version of OSB.
Thank you in advance,
Irene Kampouraki