当前位置: 首页 > 知识库问答 >
问题:

用Apache Camel处理外部web服务响应

夏何平
2023-03-14

我正在考虑两个小的Spring Boot应用程序:

  • 应用1:运行在http://localhost:8081上的小型web服务,实现一个简单的Spring控制器来响应/camel上的GET请求。访问http://localhost:8081/camel时,该服务仅返回“Hello World”。
  • 应用程序2:一个小型应用程序,它应该执行对应用程序1的GET请求,并打印出对控制台的响应(在本例中为“Hello World”)。

使用SpringsRestTemplate,我可以轻松地在应用程序2中实现这个GET请求:

RestTemplate template = new RestTemplate();
String response = template.getForBody("http://localhost:8081/camel", String.class);
System.out.println(response);
public class MyRoutes extends RouteBuilder {
    @Override
    public void configure() throws Exception() {
        from("jetty:http://localhost:8081/camel").to("direct:processRest");

        from("direct:processRest").process(new Processor() {
            @Override
            public void process(Exchange exchange) throws Exception {
                System.out.println(exchange.getIn().getBody());
            }
        });
    }
}
org.apache.camel.spring.boot.CamelSpringBootInitializationException: java.net.BindException: Address already in use: bind

Spring Boot或Apache Camel自动尝试在端口8081上启动Jetty服务器,但另一个web服务(应用程序1)已经在此端口上运行。

有人知道如何避免这个问题吗?

共有1个答案

谷梁楷
2023-03-14

您遇到的问题来自这样一个事实,即您将Camel的Jetty组件作为消费者使用,这将启动一个嵌入式Jetty服务器并将其绑定到端口8081,从而与Spring Boot应用程序冲突。要发送HTTP请求,您应该使用Jetty组件作为生产者,即将路由定义更改为类似于

从(“Scheduler:CamelTest?Delay=1000”).到(“Jetty:http://localhost:8081/camel”).到(“Direct:ProcessRest”);

 类似资料:
  • 我是反应编程的新手,并尝试使用project reactor模拟下面的用例,但我发现将响应从一个服务调用传递到另一个依赖的服务有点困难。如有任何建议或参考,将不胜感激。 响应getDetails(Request inputRequest){ 我尝试了下面的示例,它对一个服务调用起作用,但不能将响应传递给其他依赖的服务调用。 null

  • 在浏览器发送 Ajax 请求之后,下一步骤自然是服务器响应。服务器在接收到请求之后会进行一系列处理步骤,最终返回结果。而与此同时,客户端会在接收到返回的结果之后进行界面的展示或者数据的处理。 本章节主讲 Ajax 收到返回数据后处理服务器响应过程。 前言 本章节将会从两个方面来讲解 Ajax 如何处理服务端响应,它们分别是: 处理的时机 处理的方法 如果你不知道 Ajax 是如何获取服务端响应内容

  • 我正试图使Web服务与protobuf和json一起工作。问题在于,为了构建我的proto,我需要能够读取inputStream(至少我没有看到其他方法)。 我为protobuf创建了一个转换器: 在我的Spring配置中使用: 我的控制器: 问题是,如果我让控制器这样做,我会得到一个错误,因为我的webservice不支持application/octet流。 [main]信息组织。日食码头。服

  • 问题内容: 我最近公布的我面对这个问题的详细说明,这里的SO。由于我无法发送实际的请求,因此我使用了超时来模拟异步行为。在@Gloopy的帮助下,从模型到视图的数据绑定工作正常 现在,当我使用而不是(在本地测试)时,我可以看到异步请求成功,并且在我的服务中充满了json响应。但是,我的看法没有更新。 在这里更新了Plunkr 问题答案: 这是一个可以满足您需求的Plunk:http ://plnk

  • 这里的TYPO3留档https://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/4-use-foreign-data-sources.html说,可以为extbase对象使用外部数据源:“这些外部数据源可能是来自同一个TYPO3数据库或网络服务的表。” 使用的数据映射器至少允许将对象映射到同一MySQL数据库中的任何表。 我对“或w

  • 我正在研究spring MVC,并使用Apache camel来集成外部服务。我想使用Apache Camel route进行Webservice调用。 就像我的本地REST服务(http://localhostsmiliex.xx:8080/users)从外部REST服务获取数据(http://xxx:000/users)并希望通过路由获取外部数据。 哪个Apache组件适合Jetty或prod