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

从Apache Camel开始

史烈
2023-03-14

我对Apache Camel很不熟悉,如果有人能给我提供哪些骆驼组件可以用来解决特定的任务,我将非常感激。我有一个简单的REST WS。观众无法访问此服务。这个想法是在用户请求和endpoint服务之间建立中间层。所以我必须捕捉用户的请求,对其进行一些操作,发送到受限制的WS,并给用户一个响应。我刚刚开始学习apache Camel,问题是实现这个逻辑的最佳方法是什么。提前谢谢!

共有2个答案

司马耘豪
2023-03-14

有几个camel组件可用于此任务。把Camel想象成一个工具箱,你可以从多个工具中为同一个任务进行选择。

你可以使用:

  • 骆驼-HTTP4http://camel.apache.org/http4.html
  • 骆驼-码头http://camel.apache.org/jetty.html
  • 骆驼-雷斯特http://camel.apache.org/restlet.html
  • 骆驼-CXFRShttp://camel.apache.org/cxfrs.html

使用java dsl的示例:

from("jetty://http://localhost:7070/test").to("jetty://http://localhost:7070/test1");

使用blueprint的示例

<route>
    <from uri="jetty://http://localhost:7070/test"/>
    <to uri="jetty://http://localhost:7070/test1"/>
<route>
华振
2023-03-14

坦率地说,Camel不是实现web控制器的合适框架。当然有Camel Rest模块,但是它把框架的责任延伸得太远了。

我建议使用一个更适应的框架来实现WS,例如Spring或泽西,并通过请求处理程序以编程方式调用Camel终结点。在Spring中,触发Camel终结点很容易,因为CamelContext可以自动加载到您的网络控制器中:

camelContext.createProducerTemplate().sendBodyAndHeader("direct:myEndpoint", null, "id", id);

对于Camel Root,这种方法意味着它从一个直接endpoint开始,然后转发到Camel httpendpoint,如果需要,将http调用的输出转发到某个Spring bean转换步骤,最后将其传递回web控制器处理程序方法:

    <route>
        <from uri="direct:myEndpoint"/>
        <to uri="http:somehost.com"/>
        <transform>
            <method ref="springBean" method="doSomeTransformation"/>
        </transform>
    </route>
 类似资料:
  • 我正在尝试向异步路由发送消息,但它不起作用。我刚刚在github上创建了一个项目来模拟这个问题

  • 我正在使用apache camel cxf开发一个Web服务(肥皂),我遇到了这个错误。 Java . lang . illegalargumentexception:Part { http://blue print . camel . ngt . TN/}返回的类型应为[ltn . ngt . camel . blue print . WB _ subscriptions;,而不是org . A

  • 我有一个restendpoint示例。org,返回表单的json响应 我的路线是这样的 我读过关于轮询消费者的内容,但找不到如何继续轮询endpoint的示例,直到它返回“success”响应。 是否应该使用轮询消费者?如果是这样的话,可以举一个与我的案例相关的例子。用于轮询restendpoint的任何其他资源都非常有用。

  • 我试图在聚合器完成后获得一个回复,但是我得到一个异常,我没有指定任何聚合器子项,但是当我指定一个。to()endpoint我没有收到聚合结果。。。这可能吗? 控制器: 聚合器:

  • 我想测试以下骆驼路线。我在网上找到的所有例子都有以文件开头的路由,在我的例子中,我有一个Springbean方法,每隔几分钟就会被调用一次,最后消息被转换并移动到jms以及审计目录。 我对这条路线的写测试毫无头绪。目前我在测试用例中所拥有的是

  • 我从基于apache-camel-spark的rest接口获得一个json数组作为输入。开始时,我想通过apache camels路线分割json-array来处理每个元素。我该怎么做? 我的测试输入json: 对于这个问题,我在stackoverflow上找到了一些间接描述的问题: link 1, link 2, link 3。 根据这些示例,我尝试了以下骆驼路线: 当我这样做时,我总是得到以下

  • Apache Camel:2.12.2,activemq:5.7 我们注意到,在下面的路由中,对于前100次交换,节流工作正常。此后,它不是每秒发送100次交换,而是每秒仅发送1次交换。现在,如果我们将timePeriodMillis设置为100,它似乎可以正常工作。注意,我们同时发送500个交换。

  • 注意:这大部分是Java特有的-需要语言特有的调用方法 如果没有获得Vertx对象,Vert.x做不了什么。 Vertx对象是 Vert.x 的控制中心,几乎可以做所有事,包括创建客户端和服务器,获取引用到事件总线(event bus)、 设置计时器等。 所以怎么获得Vertx实例? 如果已经嵌入了 Vert.x,然后只需创建一个实例,如下所示: Vertx vertx = Vertx.vertx