进行骆驼异步调用

时间:2018-08-03 12:31:29

标签: apache-camel

我正在尝试使用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.outstart的{​​{1}}消息。这是什么问题?

1 个答案:

答案 0 :(得分:1)

异步请求可能正在创建另一个线程,并且测试正在停止完成,然后另一个线程才有机会完成API操作。

您可以尝试“等待”或“让步”线程吗?

在测试中有时很难实现多线程。