我正在尝试使用 apache camel API 对网络服务进行异步调用。
如果我拨打正常电话,它工作正常。但是当我尝试进行异步调用时,它并没有命中 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
和的消息end
。这里有什么问题?
异步请求可能正在创建另一个线程并且测试在该其他线程有机会完成 API 操作之前停止完成。
您可以尝试“等待”或“放弃”线程吗?
多线程在测试中有时会很困难。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句