简体   繁体   中英

WSO2 BPS BPEL Timeout when correlation not found

Working with WSO2 BPS 3.6.0 - we have a service which notifies a running BPEL process about an event.

Util the process is running, it is working great (using the correlation). But when the process is already completed, the request doesn't get any response. I'm ok if an exception could be raised, but getting no response whatsoever is annoying. Is there a way to fail quickly if there's no (active) instance with the specific correlation?

Edit: effectively the receive, pick and onEvent activities behave the same way

Thank you in advance

Apache ODE is designed to enqueue incoming messages that arrive early.

Example: Process

Receive1 -> Receive2 -> Receive3 -> Reply3

Receive1: Creates an instance and initiates the correlation.

Receive2: Instance is awaiting for the message to arrive.

But, message on Receive3 arrives early before Receive2 and hence gets enqueued. Since the following activity is a Reply3, it's a synchronous call and the channel will timeout waiting for the response.

Once the Receive2 arrives, the engines sees that message for Receive3 has already arrived and completes the instance.

Now if another message arrives on Receive3 with the same correlated value, it gets enqueued again for future consumption on a new instance that would be created with the same correlation value. Hence No errors will be reported.

Note: This is the behaviour of Apache ODE, unless WSO2 has changed this behavior.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM