Rah*_*hul 1 java spring apache-camel
我是骆驼新手,正在编写一个小型 POC 以在现有应用程序中实现。应用程序将 xml 请求作为输入,其中包含请求的服务和相关数据。然后它会一一调用这些服务。当服务被成功调用时,我会在处理器中检索 http 响应代码,如下所示,并执行进一步的逻辑:
Object code = exchange.getIn().getHeader(Exchange.HTTP_RESPONSE_CODE);
if(null!=code && code instanceof Integer)
{
responseCode = (Integer) code;
}
Run Code Online (Sandbox Code Playgroud)
在成功的情况下,收到的 responseCode = 201
根据responseCode,我知道服务调用是否成功,然后继续下一个。
但是,我试图通过使服务 url 不正确来产生负面情况,并且再也看不到 http 响应代码:
原始服务网址 - http://xxx:0000/.../.../.../.../...
修改后的服务网址 - http://xxx:0000/.../.../.../.../abc/...
在失败的情况下,收到的 responseCode = null
在邮递员中,我收到以下错误:
org.apache.camel.http.common.HttpOperationFailedException:HTTP 操作失败调用
http://xxx:0000/.../.../.../.../abc/...statusCode: 404 at org.apache.camel.component.http.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:274) at org.apache.camel.component。 http.HttpProducer.process(HttpProducer.java:183)
我不知道为什么当邮递员的错误消息中出现 http 响应代码时,Exchange 不包含它。
我使用 onException 来处理任何异常,然后调用处理器来进一步处理流程:
<camel:onException>
<camel:exception>java.lang.Exception</camel:exception>
<camel:process ref="xxxProcessor" />
</camel:onException>
Run Code Online (Sandbox Code Playgroud)
我想我可以将 responseCode=null 视为失败并继续我的逻辑,但想了解为什么响应代码被返回为 null。
提前致谢!
我想到了。似乎在服务异常的情况下,抛出 org.apache.camel.http.common.HttpOperationFailedException 的一个实例,并且其中存在 http 状态代码。它可以在处理器中检索,如下所示:
Exception e = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
if(null!=e && e instanceof HttpOperationFailedException)
{
HttpOperationFailedException httpOperationFailedException = (HttpOperationFailedException)e;
responseCode=httpOperationFailedException.getStatusCode();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1238 次 |
| 最近记录: |