Как именно работает http-запрос «тактирования» в mule esb / java? - PullRequest
0 голосов
/ 18 октября 2019

Я получил новое задание, в описании которого содержится содержание ошибки. Только это.

ERROR 2019-08-23 16:06:40,819 [[Integrator].myOnlineHttpConnector.receiver.59] org.mule.exception.CatchMessagingExceptionStrategy:

********************************************************************************

Message        : Response code 500 mapped as failure. Message payload is of type: BufferInputStream

Code         : MULE_ERROR--2

--------------------------------------------------------------------------------

Exception stack is:

1. Response code 500 mapped as failure. Message payload is of type: BufferInputStream (org.mule.module.http.internal.request.ResponseValidatorException)

 org.mule.module.http.internal.request.SuccessStatusCodeValidator:37 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/module/http/internal/request/ResponseValidatorException.html)

--------------------------------------------------------------------------------

Root Exception stack trace:

org.mule.module.http.internal.request.ResponseValidatorException: Response code 500 mapped as failure. Message payload is of type: BufferInputStream

    at org.mule.module.http.internal.request.SuccessStatusCodeValidator.validate(SuccessStatusCodeValidator.java:37)

    at org.mule.module.http.internal.request.DefaultHttpRequester.innerProcess(DefaultHttpRequester.java:202)

    at org.mule.module.http.internal.request.DefaultHttpRequester.process(DefaultHttpRequester.java:166)

  + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)

********************************************************************************

Мой поток похож на:

    <http:request-config name="HTTP_Requester" host="${host}" port="${port}" basePath="${path.base}" doc:name="HTTP Request Configuration"/>

  <custom-transformer class="xxx" name="InvoiceByteArrayToInvoiceResponseTransformer"/>



    <flow name="get-invoice-flow">

    <vm:inbound-endpoint exchange-pattern="request-response" path="invoice/get" connector-ref="VMConnector"/>

    <response>

      <set-payload value="#[org.apache.commons.io.IOUtils.toByteArray(payload)]" doc:name="Set Payload"/>

      <gzip-uncompress-transformer></gzip-uncompress-transformer>

      <transformer ref="InvoiceByteArrayToInvoiceResponseTransformer" doc:name="InvoiceByteArrayToInvoiceResponseTransformer"/>

    </response>

    <set-session-variable variableName="CODE" value="#[payload.code]"/>

    <set-session-variable variableName="ID" value="#[payload.id]"/>

    <http:request config-ref="HTTP_Requester" path="/#[java.lang.Integer.parseInt(payload.code)]/#[payload.id]" method="GET"/>  

</flow>

После очень быстрого разговора с моим лидером (у него нет времени, но он гений программирования), я узнал, что речь шла о «счетчике http-запроса».

У кого-то здесь (https://help.mulesoft.com/s/question/0D52T00004mXSiP/how-to-solve-quotresponse-code-404-mapped-as-failure-message-payload-is-of-type-bufferinputstream-quot) была похожая проблема. Мне кажется, ответ «тело слишком длинное (> 10000)»Я думаю.

Я читаю https://docs.mulesoft.com/connectors/http/http-request-ref

Может ли кто-нибудь объяснить мне в простых терминах, как это работает, как работает динамическая конфигурация и как можно синхронизировать счетчик? И если я изменю свойствополезная нагрузка в пути http-запроса, так будет ли он работать? Как здесь решение?

...