WSO2 BPS BPEL Тайм-аут, когда корреляция не найдена
Работа с WSO2 BPS 3.6.0 - у нас есть служба, которая уведомляет запущенный процесс BPEL о событии.
Пока процесс запущен, он работает отлично (используя корреляцию). Но когда процесс уже завершен, запрос не получает никакого ответа. Я в порядке, если исключение может быть выдвинуто, но никакого ответа не раздражает. Есть ли способ быстро потерпеть неудачу, если нет (активного) экземпляра с определенной корреляцией?
Редактировать: действия по приему, выбору и onEvent ведут себя одинаково
заранее спасибо
1 ответ
Apache ODE предназначен для постановки в очередь входящих сообщений, которые приходят рано.
Пример: процесс
Получить1 -> Получить2 -> Получить3 -> Ответить3
Receive1: создает экземпляр и инициирует корреляцию.
Receive2: экземпляр ожидает прибытия сообщения.
Но сообщение на Receive3 приходит раньше, чем Receive2 и, следовательно, ставится в очередь. Поскольку следующее действие - это Ответить3, это синхронный вызов, и время ожидания ответа канала истекает.
Как только Receive2 прибывает, механизмы видят, что сообщение для Receive3 уже прибыло, и завершает экземпляр.
Теперь, если на Receive3 приходит другое сообщение с тем же коррелированным значением, оно снова ставится в очередь для будущего использования на новом экземпляре, который будет создан с таким же значением корреляции. Следовательно, об ошибках не сообщается.
Примечание. Это поведение Apache ODE, если только WSO2 не изменил это поведение.