问题标签 [camel-http]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
635 浏览

apache-camel - Camel rest - 允许特定 ip 访问发送请求

我有以下骆驼休息路线。目前,所有主机都可以使用公开的 URL 访问此路由。

无论如何我可以根据配置的IP限制远程主机访问。我想允许某些 IP 地址访问此 URL。骆驼中是否有任何配置可用于处理此问题?

0 投票
1 回答
677 浏览

apache-camel - 在 application.yml 中配置 http4 证书

我正在尝试将我的 http4 证书配置从 RouteBuilder 类移到 application.yml 文件中。我的代码与此页面上“为 HTTP 客户端设置 SSL - 组件的编程配置”下的 Java 示例完全相同:( https://camel.apache.org/http4.html#HTTP4-UsingtheJSSEConfigurationUtility )。但是,网站上没有 yml 示例,只有我目前拥有的 Java 解决方案和 Spring DSL 解决方案。有人知道如何将 Java 代码翻译成 yml 吗?

0 投票
1 回答
176 浏览

spring-boot - 如何动态创建路由配置本身

在我的一个用例中,我将所有路由信息都保存在一个 json 文件中,我想读取该文件并相应地创建路由。

例如,

如果我在我的 json 配置文件中声明了这样的路由

然后我能够动态地创建如下路线。但是在这里,尽管它是动态的,但路由定义不是动态的,因为我使用了一个“from”和一个“to”定义,但是这个定义的参数我是动态传递的。

但我想动态地做路由定义。例如,我有这样的路由配置,

然后在我的路由定义中,我需要动态添加一个“到”定义。它只是一个例子。它可能更具活力。例如,可以更改配置以引入“进程”或“bean”或“类”定义。所以根据配置,我们需要决定要创建多少个“to”以及要创建多少个“process”等等。我可能需要在一些验证等之后调用下一个休息端点,有时我需要调用 kafka 将消息放入队列。我确实看到了一个在列表中列出所有路由并执行它的选项,但我认为我们需要在调用下一个端点之前灵活地添加进程或类定义,这必须基于配置。

我看到了一些可以动态定义路由定义本身的信息,我正在研究它。但同时我想在这里发布这个以获得专家的意见。另外,请建议我是否以正确的方式使用骆驼?因为在我的用例中,我正在考虑添加“to”定义,根据配置文件动态传递类名,以便应用程序开发人员可以在交付到目标之前动态地在此类中执行转换、丰富或操作的逻辑系统。如果我们有更好的方法,请告诉我。另外,让我知道 XML 的做法是好方法还是以 json 格式定义自己的配置文件是创建动态路由的好方法。

我打算读取 json 文件并将路由器定义动态地创建为字符串。但我需要将此字符串加载为上下文中的定义。我想我错过了这部分。

.to("class:com.xxx.camel.layoutTransform?method=layout()")

如果我们在 xml 文件中提供所有这些配置,并且如果 camel 支持使用该文件自动创建路由定义,那么我们也可以考虑这个选项。

下面是从另一个来源使用 XML 文件创建路由器定义的一种方法。在 XML 中,我们定义了路由器信息,并将此 xml 视为字符串,并将此字符串转换为路由器定义对象,最后添加到上下文中。

我想使用 java dsl 定义作为字符串来做类似的概念。

例如,如果我有如下字符串,那么可以将其转换为路由器定义吗?

String dslString = "from("direct:starting").to("seda:end")";

这是我的用例。有时,我们想调用 2 个 http 服务,如下所示

from("direct:start").to( http://localhost:8080/service1).to (" http://localhost:8080/service2 ")

有时我们可能需要调用 3 个服务,如下所示

from("direct:start").to( http://localhost:8080/service1).to (" http://localhost:8080/service2 ").to(" http://localhost :8080/service3 " )

有时我们需要在调用 service2 之前进行转换,如下所示。

from("direct:start").to( http://localhost:8080/service1).to ("class:com.xxx.yyy").to(" http://localhost:8080/service2 ")。 to(" http://localhost:8080/service3 ")

在偶数驱动架构中,我们必须为每种事件类型定义一组路由。所以想法是,如果我们在表中为每种事件类型定义这些路由,那么在服务启动时,所有路由都将在上下文中加载并启动。我能够以 XML DSL 方式做同样的事情,但尝试在 java DSL 中做同样的事情。

提前致谢!

0 投票
1 回答
64 浏览

apache-camel - 如果 http 请求失败,如何将消息返回到队列中?

我使用带有activemq和camel-http的apache camel,在消息发送到端点并且请求失败后,我仍然会丢失队列中的消息。如果请求失败,则消息不丢失是必要的。我怎样才能做到这一点?

0 投票
0 回答
731 浏览

apache-camel - Camel - 基于 HTTP 请求内容的重定向

我正在尝试使用骆驼根据请求正文的内容重定向 http 请求。

我已经创建了一个用于接收 http 请求的端点,并且我能够使用以下路由成功地将我的请求重定向到不同的 URL;

但我无法找到检查 http 请求正文的方法。我的 HTTP 请求将具有与此类似的 JSON 正文;


如果 JSON 包含值“testLoginRequest”,我想将请求重定向到特定 URL。我读到这应该是可能的;

由于我必须使用 XML DSL,我尝试实现以下路由,但它似乎不起作用;

我是否遵循正确的方法。我在这里做错了什么?

0 投票
1 回答
416 浏览

camel-http - Restlet 错误:“无法运行以下服务器端任务:sun.net.httpserver.ServerImpl$Exchange@56d26222”

我想通过调用 URL 来开始我的路线。我的开始路线还没有准备好,但工作得很好。我的问题是,当我使用调用 start-route 的 rest-route 时收到一条错误消息。

我可以启动程序而不会出现任何错误。当我调用 URL ( http://localhost:8080/?restletMethods=GET ) 时发生错误。但是,仅当对 api 的请求(我从中检索 JSON)在启动路由中时才会出现错误。当我将这两行注释掉时,一切都按预期进行,并且我没有收到任何错误消息。否则会弹出以下错误信息:

0 投票
1 回答
1103 浏览

apache-camel - Apache Camel:如何使用 Premove、Move 和 MoveFailed 选项从 SFTP 下载多个文件?

我有以下格式的两个文件名:

截至目前,我只选择 Gontagrater_1.xml 并将其重命名为 processing 并在完成后失败。

现在 Gontagrator_2 出现了。建议为两者创建单独的路线。

我们可以在一条路线上同时下载并相应地重命名吗?如果是,我需要传递什么值?

更新1:有多个不同名称的文件,但我只需要使用上述两个文件名

更新 2:来自组件的整体是:

0 投票
0 回答
689 浏览

spring-boot - CamelHttp 多部分/表单数据上传。camel-http4 和 camel-http-starter 之间的变化

我有一个 Spring Boot 应用程序,它使用 Camel 将 multipart/form-data 请求发布到 REST 端点。该请求包括文本部分和文件部分。构建请求的代码如下:

这段代码运行良好。在我的 pom.xml 文件中,我正在导入 camel-http4 组件:

正如最新的 Camel 文档https://camel.apache.org/components/latest/http-component.html所建议的那样,我已尝试用 camel-http-starter 替换 camel-http4 组件

并用 http 替换所有 http4 端点,但是上面的代码现在失败了,因为在 camel-http 组件中的 HttpEntity 和 InputStream 之间没有可用的类型转换器。

我尝试过使用 Camel 的 MIME Multipart DataFormat:

但我不断从服务器收到 HTTP 400 错误,这意味着它不理解请求。所以我的问题是:如何使用 MIME Multipart DataFormat(或任何其他方式)来获得与之前的工作代码相同的多部分请求?

0 投票
0 回答
356 浏览

json - Apache Camel rest配置、选择和jsonpath

带有选择和 jsonpath 的 Camel 端点在尝试作为独立端点时可以正常工作,但是当我在路由配置中引入 rest 端点时,选择会停止过滤从邮递员发送的基于内容的消息路由。我在这里缺少什么吗?

我尝试将 json 消息直接发送到端点并且它正确路由。但是当添加 restConfiguration 并尝试启动路由时,它会停止路由或发送到正确的方法。

主班——

HelloRoute 类-

目前,如果上面的 JSON 更改为“MessageType”:“Request2”,那么它会跳转到 else 子句,而不是转到“Route2”方法。

0 投票
2 回答
733 浏览

apache-camel - HttpOperationFailedException 可用于 apache 的 http4 吗?

我正在为 http 服务器使用 apache camel http4。JBoss Fuse Karaf 容器 6.3.0.redhat-310 已捆绑 camel-core 2.17 - (2.17.0.redhat-630310)

我正在尝试使用异常类 org.apache.camel.component.http.HttpOperationFailedException 来捕获 HTTP 响应异常。

但是,由于 Caused by: java.lang.ClassNotFoundException: org.apache.camel.component.http.HttpOperationFailedException 导致关联路由无法启动

我添加为依赖camel-http,没有任何变化,仍然失败。

似乎不再包括这个类了?

Q. 是由以下原因引起的:java.lang.ClassNotFoundException: org.apache.camel.component.http.HttpOperationFailedException 可用于 http4 服务器,或者有谁知道我做错了什么。

YEILDS ...因为 org.apache.camel.component.http.HttpOperationFailedException 引起:java.lang.ClassNotFoundException:org.apache.camel.component.http.HttpOperationFailedException

我也尝试过使用全局异常处理程序

但是,在这里我得到一个错误异常说继续不能有孩子????

谢谢你!