Почему WSO2 отправляет посредник не ждет ответа?
Вопрос
У меня есть прокси WSO2 ESB-4.6.0, который вызывает еще один прокси, который вызывает веб-сервис.
Proxy1 --> Proxy2 --> Endpoint
.
Если я напрямую вызову второй прокси через SOAPUI, ответ правильно возвращается и напечатан, но если я позвоню первым прокси, то возвращается пустое тело.
В журнале ESB противопотребление Proxy1 печатается до выхода прокси2.
Похоже, что отправка посредника, присутствующая в последнем случае Proxy1, делает асинхронный вызов прокси2.
Я пытался заменить отправку посредника по медиатору выноска, но результат такой же.
Follow это Учебник, но он тоже не работает.
Как переслать ответ на прокси2 к абонеру?
Пожалуйста помоги. Это убивает меня!
Редактировать
проблема решена! Я использовал неправильный порт, чтобы указать параметр ServiceUrl для медиатора на вынос.
Редактировать
Текущие конфигурации прокси:
Proxy1 (вызова прокси 2 - ManageWorkforce):
<proxy xmlns="http://ws.apache.org/ns/synapse" name="GetAppointmentSchedulePortalReqCS" transports="http https" startOnLoad="true" trace="disable">
<target>
<inSequence>
<xslt key="conf:ManageWorkforce/xslt/GetAppointmentSchedulePortalReqCS_Request.xsl"/>
<header name="Action" value="getAppointment"/>
<send>
<endpoint>
<address uri="https://localhost:9443/services/ManageWorkforce"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<xslt key="conf:ManageWorkforce/xslt/GetAppointmentSchedulePortalReqCS_Response.xsl"/>
<send/>
</outSequence>
<faultSequence/>
</target>
<publishWSDL key="conf:ManageWorkforce/GetAppointmentSchedulePortalReqCS.wsdl" />
</proxy>
.
Прокси 2 (вызов Proxy3-getAppointmentPeopleProvcs):
<proxy xmlns="http://ws.apache.org/ns/synapse" name="ManageWorkforce" transports="https http" startOnLoad="true" trace="disable">
<target>
<inSequence>
<switch source="get-property('Action')">
<case regex="getAppointment">
<callout serviceURL="https://localhost:8243/services/GetAppointmentPeopleProvCS" action="getAppointment">
<source xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/>
<target xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/>
</callout>
</case>
<!-- another cases -->
<default/>
</switch>
<property name="RESPONSE" value="true" scope="default" type="STRING"/>
<header name="To" action="remove"/>
<send/>
</inSequence>
<outSequence>
<drop/>
</outSequence>
<faultSequence/>
</target>
<publishWSDL key="conf:ManageWorkforce/ManageWorkforce.wsdl"/>
</publishWSDL>
</proxy>
.
Proxy 3 (вызов сервисному устройству):
<proxy xmlns="http://ws.apache.org/ns/synapse" name="GetAppointmentPeopleProvCS" transports="http https" serviceGroup="" startOnLoad="true" trace="disable">
<target>
<endpoint key="GetAppointment"/>
<inSequence>
<xslt key="conf:ManageWorkforce/xslt/GetAppointmentPeopleProvCS_Request.xsl"/>
</inSequence>
<outSequence>
<xslt key="conf:ManageWorkforce/xslt/GetAppointmentPeopleProvCS_Response.xsl"/>
<send/>
</outSequence>
<faultSequence/>
</target>
</proxy>
.
Последняя конечная точка (сервис):
<endpoint xmlns="http://ws.apache.org/ns/synapse" name="GetAppointment">
<address uri="http://10.13.6.75:9764/services/GetAppointment" />
</endpoint>
. Решение
Есть два медиатора для ссылки на веб-сервисы.Те, кто Mediator Mediator и
Итак, вы должны использовать посредник вызова, если рассматривать о производительности.Это доступно в ESB 4.8.0.
Есть два образцы для них в документации Wiki.
.Есть еще один образец для вызоваПосредник из блога Душана.Это имеет более сложные посредники, но вы можете попробовать.
Это просто быстрый ответ.
Я надеюсь, что это поможет.
Спасибо!
Другие советы
proxy1 ждет ответа от proxy2, даже вы используете посредник отправки. Проксиметр Proxy1 не должен выполняться перед выполнением оправдания прокси 2.
Переключатель на раскрытие Mediator - не идеальное решение для этого. Я думаю, что должно быть что-то не так с конфигурацией прокси.
Если вы можете опубликовать конфигурацию прокси здесь, мы могли бы дать вам помощь, чтобы решить это.