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

骆驼码头使用Spring引导口

那存
2023-03-14

我正在用apache Camel构建一个spring boot应用程序。我想让camel中的rest()DSL监听spring boot启动时的相同端口。

我尝试了这个链接,但如果不使用servlet组件,就无法解析它。我不希望我的路由看起来像servlet:/hello,而是希望直接使用jetty(jetty:http://0.0.0.0:0/hello)

 Bean 'org.apache.camel.spring.boot.CamelAutoConfiguration' of type [org.apache.camel.spring.boot.CamelAutoConfiguration] is not eligible for getting processed by all BeanPos
 Logging initialized @1690ms to org.eclipse.jetty.util.log.Slf4jLog
 Server initialized with port: 8080
 jetty-9.4.27.v20200227; built: 2020-02-27T18:37:21.340Z; git: a304fd9f351f337e7c0e2a7c28878dd536149c6c; jvm 1.8.0_221-b11
 Initializing Spring embedded WebApplicationContext
 Root WebApplicationContext: initialization completed in 733 ms
 DefaultSessionIdManager workerName=node0
 No SessionScavenger set, using defaults
 node0 Scavenging every 660000ms
 Started @1882ms
 Initializing ExecutorService 'applicationTaskExecutor'
 Detected and using LURCacheFactory: camel-caffeine-lrucache
 LiveReload server is running on port 35729
 Loading additional Camel XML routes from: classpath:camel/*.xml
 Loading additional Camel XML rests from: classpath:camel-rest/*.xml
 JMX is enabled
 Apache Camel 3.2.0 (CamelContext: ServicesRest) is starting
 StreamCaching is not in use. If using streams then its recommended to enable stream caching. See more details at http://camel.apache.org/stream-caching.html
 Route: route1 started and consuming from: direct://getCustomer
 jetty-9.4.27.v20200227; built: 2020-02-27T18:37:21.340Z; git: a304fd9f351f337e7c0e2a7c28878dd536149c6c; jvm 1.8.0_221-b11
 Started o.e.j.s.ServletContextHandler@79c2e942{/,null,AVAILABLE}
 Started ServerConnector@11d5056{HTTP/1.1, (http/1.1)}{0.0.0.0:63660}
 Started @2441ms
 Route: route2 started and consuming from: jetty:http://0.0.0.0:0/hello
 Total 2 routes, of which 2 are started
 Apache Camel 3.2.0 (CamelContext: ServicesRest) started in 0.043 seconds
 Initializing Spring DispatcherServlet 'dispatcherServlet'
 Initializing Servlet 'dispatcherServlet'
 Completed initialization in 3 ms
 Started ServerConnector@436343c0{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
 Jetty started on port(s) 8080 (http/1.1) with context path '/'
 Started CamelMicroservicesApplication in 1.688 seconds (JVM running for 2.462)

@Component
public class SimpleRouteBuilder extends RouteBuilder {

    @Override
    public void configure() throws Exception {

        rest("/").get("hello")
            .produces("text/plain")
            .to("direct:getCustomer")

            .outType(String.class);

        from("direct:getCustomer")
                .log(LoggingLevel.INFO, "${body}");

    }
}

Build.Gradle

dependencies {
    implementation ('org.springframework.boot:spring-boot-starter-web') {
        exclude group: 'org.springframework.boot', module:'spring-boot-starter-tomcat'
    }
    implementation 'org.springframework.boot:spring-boot-starter-jetty'
    implementation 'org.apache.camel.springboot:camel-spring-boot-starter:3.2.0'
    implementation 'org.apache.camel.springboot:camel-rest-starter:3.2.0'
    implementation 'org.apache.camel:camel-jetty:3.2.0'
   }
}

共有1个答案

邓季
2023-03-14

如果您将Spring Boot设置为使用任何HTTP服务器(tomcat、jetty、undertow),并且希望将其用作Camel Rest DSL的一部分,那么您应该使用camel-servlet-starter来使用servlet与Spring Boot HTTP服务器集成。

 类似资料:
  • 我是第一次使用Camel。我的试验项目是编写一个应用程序,该应用程序接收HTTP GET请求(使用Jetty)并通过Thrift将请求传递到另一台服务器。然后将收到的答案传递回客户端。(即,如果您愿意,我正在编写超文本传输协议-get请求和Thrift支持的服务器之间的数据交换机或中间件应用程序。) 我有一个完美的非驼峰版本,现在我正在尝试将驼峰等效物组合在一起。目前,我只想将jetty请求写入一

  • 我想在Camel环境中使用Jetty组件。这是我的spring配置的摘录。xml: 下面是用于返回字符串的代码: 本地地址有效(http://127.0.0.1/enc)但是浏览器没有正确显示字符串(显示为“abcÃö¼ÃŸ”–äääääŒääää‰)。我假设问题是一些编码。如何设置像“utf-8”这样的编码? 我在这里找不到任何提示(http://camel.apache.org/jetty.

  • 我使用的是Spring启动和骆驼版 为了使骆驼能够访问属性并使用它们在uri路线中使用 添加依赖项并定义,bean足以让它工作 -- 现在,在我按照迁移指南将更新为并修复了组件的导入之后。在运行时,camel找不到属性,我得到以下信息: 在text:activemq:queue:{{xxx}的属性中找不到键为[xxx]的属性 你知道是什么改变了,为什么我的路线不再有效了吗? 更新1 我将sprin

  • 我知道有一些方法可以捆绑应用程序并将其部署在Tomcat或Jetty中。但是,如果我这样做了,最大的问题就变成了如何与Restlet集成。 我做了进一步的挖掘。我举了骆驼附带的一个tomcat例子。然后我试着让它具有RESTLET功能。差不多管用了。现在的问题是参数没有传递到路由。我希望当调用这个服务器:http://x.x.x.x.x:8080/rs/user/?name=Paul时,我会得到:

  • 我使用以下路线: endpoint: 如果文件大小超过2 MB,则会发生以下异常:(Camel-Jetty超文本传输协议代理大响应数据原因问题:超出缓冲容量) 问题: 有没有办法避免这种缓冲问题?(可能使用另一个组件代替jetty?) 由于码头endpoint中的主体没有改变,我想知道是否有可能将主体直接“绕过”到下一个endpoint。

  • 我是Camel集成的初学者,我需要创建定制的Camel组件,并在Spring Boot应用程序中使用它。 我尝试使用maven原型生成我的组件。 所以命令是这样的: mvn原型:generate-DarchetypeGroupId=org。阿帕奇。骆驼ArchetypeArtifactid=camel原型组件-DarchetypeVersion=2.12.1-DgroupId=my。tcp。骆驼c