apache-camel - Camel异步调用获取响应
问题描述
我正在使用以下代码使用 apache camel API 对 Web 服务进行异步调用:
Exchange exchange = new DefaultExchange(context);
Message msg = exchange.getIn();
msg.setBody(requestStr);
msg.setHeader("content-type", "application/json");
template.asyncCallback("direct:invokeAPI", exchange, new Synchronization() {
@Override
public void onComplete(Exchange exchange) {
System.out.println("Success");
System.out.println(exchange);
System.out.println(exchange.getIn());
System.out.println(exchange.getIn().getHeaders());
System.out.println(exchange.getIn().getBody());
System.out.println("================================");
System.out.println(exchange.getOut());
System.out.println(exchange.getOut().getHeaders());
System.out.println(exchange.getOut().getBody());
System.out.println("================================");
Exception ex = exchange.getException();
System.out.println(ex.getMessage());
}
@Override
public void onFailure(Exchange exchange) {
System.out.println("Failure");
}
});
现在我的网络服务因异常而失败,它返回一个 json 响应:
Response-Code: 500
Content-Type: application/json
Headers: {Content-Type=[application/json], Date=[Fri, 03 Aug 2018 13:18:19 GMT]}
Payload: {"errorMessage":"Unable to process","errorCode":"500"}
现在如何在我的template.asyncCallback
方法中捕获这些信息。在我上面的代码中,它将onComplete
回调方法并打印以下消息:
Success
Exchange[ID-xxxx-0-2]
Message[ID-xxxx-0-1]
{breadcrumbId=ID-xxxx-0-1, content-type=application/json}
{
"source":"PDF"
}
================================
Message[]
{}
null
================================
我正在尝试获取状态 500 代码和包含错误信息的响应有效负载,但我无法打印任何内容。您能否帮助我获取错误信息的正确方法是什么。
解决方案
推荐阅读
- python - 在 Python 中使用乳胶和变量(标题 Matplotlib)
- javascript - 如何将图像放在另一个图像上
- groovy - 替换 Groovy XML 节点会导致后续 findAll 调用出现问题
- python - 如何将条件应用于列表理解?
- reactjs - 如何在我的反应状态下访问这些信息?
- apache-spark - 使用 Spark 避免顺序迭代
- css - Angular JS - 如何覆盖 md-menu-content css
- r - data.table:索引子集
- audio - ffmpeg amerge 过滤时出错:无法分配内存
- sql - MS Access,从两个表中获取总值