我正在尝试使用apache camel API异步调用Web服务。
如果我拨打普通电话,则工作正常。但是,当我尝试进行异步调用时,它没有达到API。您能帮我解决这里的问题吗?
@Test
public void testSendAsync() {
Map<String, Object> headers = new HashMap<>();
headers.put("content-type", "application/json");
System.out.println("start = "+headers);
ProducerTemplate template = context.createProducerTemplate();
/*template.sendBodyAndHeaders("direct:invokeAPI","{\n" +
"\"source\":\"PDF\"\n" +
"}", headers);
*/
Future fut = template.asyncRequestBodyAndHeaders("direct:invokeAPI","{\n" +
"\"source\":\"PDF\"\n" +
"}", headers);
System.out.println("end = "+headers + " , " + fut.isDone());
}
在上面的代码sendBodyAndHeaders
中工作正常,我可以看到它成功地击中了API。
在异步调用asyncRequestBodyAndHeaders
的情况下,它没有达到API,我看到system.out
和start
的{{1}}消息。这是什么问题?
答案 0 :(得分:1)
异步请求可能正在创建另一个线程,并且测试正在停止完成,然后另一个线程才有机会完成API操作。
您可以尝试“等待”或“让步”线程吗?
在测试中有时很难实现多线程。