问题标签 [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 投票
2 回答
1196 浏览

proxy - Global configuration of http proxy in camel

So far, I have learned to ways to set HTTP proxy with camel.

  • First one is to append proxy information with destination URI

    /li>
  • Other approach is setting proxy global to CamelContext

    Other than these approaches, is there any way by which I can configure proxy globally so that, I don't have repeat this procedure for each URI or for each CamelContext? For example, if I configure proxy in a properties file, how can I use it(Other than using property using {{key}} approach)?

0 投票
4 回答
21304 浏览

java - 使用 Apache Camel 发送 POST 请求

我能够使用 Apache Camel 向 REST 服务发送 GET 请求,现在我正在尝试使用 Apache Camel 发送带有 JSON 正文的 POST 请求。我无法弄清楚如何添加 JSON 正文并发送请求。如何添加 JSON 正文、发送请求并获取响应代码?

0 投票
1 回答
6665 浏览

java - Camel Http4 使用基本身份验证和代理身份验证

我一直在尝试使用 Apache Camel 的 Http4 组件连接到需要基本身份验证的 HTTPS URL。连接需要通过经过身份验证的 HTTP 代理来完成。

因此,根据文档,我像这样配置 Camel 端点:

这会导致403 - Forbidden来自目标服务器的响应。查看org.apache.http.wire日志,它显示代理凭据proxyUser / proxyPassword被转发到目标服务器,而不是标头中的预期myUser / myPasswordAuthorization

调试 和 的源,CompositeHTTPConfigurer.configureHttpClient似乎因为两个配置器都将其凭据设置为by ,因此其中一个在此过程中丢失 - 被覆盖。ProxyHttpClientConfigurer.configureHttpClientBasicAuthenticationHttpClientConfigurer.configureHttpClientHttpClientBuildersetDefaultCredentialsProvider

看起来这可能是 Camel 的 Http4 组件中的错误?还是我错过了什么?

这是带有 Spring Boot 1.5.1.RELEASE 的 Camel 2.18.2。

0 投票
1 回答
215 浏览

post - 中间加工的骆驼路线

我需要编写一个将文件发送到 Web 服务的 Camel 路由。在将文件发送到端点之前,我必须查询数据库以获取一些信息并将文件连同其他信息一起发送到端点。整个路线完成后,我还必须将文件移动到另一个目录。我能够独立创建路线的各个部分。我想知道如何在一条路线上做到这一点。

0 投票
1 回答
982 浏览

tomcat - 使用 KeepAlive 优化 Camel HTTP4

我希望能够使用 Camel 以相当快的速度(> 1500/秒)将消息发布到 HTTPS 服务器,只使用一个到服务器的连接。

我尝试将 keepAlive 设置为 true,但我仍然看不到速度有任何改进。

在发送 5 条消息时使用了 tcpdump,我在 Wireshark 上找到了 5 个 SYN/ACK 数据包。可能还会在每个 POST 上发送 SSL 证书。(tcpdump 捕获了 102 个数据包,但我发送的只是 5 个“HelloWorld”字符串)

有什么办法可以加快速度吗?这是我使用的代码:

SSL 证书详细信息作为 JVM 参数给出。我可以发布数据,但速度是我需要改进的地方。

[更新] 我使用 Apache Tomcat 8 作为我的服务器。在 server.xml 中设置以下内容:

我还需要在我的服务器上配置其他东西吗?

0 投票
1 回答
3152 浏览

apache-camel - Apache Camel:如何在 HTTP URI 中动态设置标头值?

我正在学习 Camel 并创建了如下路线:

outboundUri()方法返回一个在路径中带有占位符的 URI ${header.CamelFileName},. 我想做的是使用某种标题映射器来解决这个问题,我可以按优先级顺序查看一些标题,如果不存在,为CamelFileName.

如何使用该HTTP4组件来实现这一点?

0 投票
1 回答
522 浏览

apache-camel - 使用 Netty4Http 确保只有一个 TCP 连接

我正在尝试使用 Netty4Http 组件发送大量 HTTPS 请求。这是一个示例代码来测试这个:

此代码有效,但是我们看到在以异步模式发送数据时打开了多个端口。这可以通过检查 Wireshark 来验证。

此外,当我们在 JVisualVM 上分析程序时,我们可以看到创建了几个 NettyClientTCPWorker 和 ProducerTemplate 线程。我看到我们可以通过workerCount设置来控制工作线程的数量。

我对在客户端计算机上打开以将数据发送到服务器的端口数量有所限制。我需要将其保持在可配置的值(通常为 1)。

如何确保在客户端机器上只打开一个端口并且仍然使用异步模式?

我尝试将 producerPoolMaxActive 属性设置为 1。现在只打开了一个端口,但这也意味着只发送了一个请求。看起来为每个发送的请求打开了一个端口。这是我需要避免的。

[更新] 我在标题中添加了 Connection: keep-alive ,但这没有帮助。我认为核心问题是为每个请求打开一个新连接。我在日志中看到了这一点:

0 投票
2 回答
512 浏览

apache-camel - http4 未设置 HTTP_RESPONSE 属性

我有一个非常简单的路由,它获取一个 URL 并使用 Camel HTTP4 组件打印内容:

请注意,我使用 out.body 是因为,如Camel 文档中所述:

Camel 会将来自外部服务器的 HTTP 响应存储在 OUT 正文中。IN 消息中的所有标头都将复制到 OUT 消息中,因此在路由期间会保留标头。

但我从OUT(正文和标题)获得空值。仅在IN消息中填写所有内容。

我错过了什么还是一个错误?

0 投票
1 回答
1395 浏览

spring-boot - 从 activemq 到 rest 端点的骆驼路线

我正在尝试使用 Spring Boot 1.5.2.RELEASE + Camel (Spring Boot starter) 2.19.2 来监听 ActiveMQ 队列,然后将消息作为其主体发布到休息端点 URL(POST 方法)。实现这一目标的最佳方法是什么?我收集了一些信息,并试图将它们联系在一起,但有点困惑。

这是我为 Camel Rest DSL 收集的内容,我不太确定下面的骆驼是通过这个创建这些休息服务还是它只是一个已经暴露的端点,在我的情况下它是一个已经暴露的端点

使用上面是我为 ActiveMQ 收集的内容,我不太确定是否正确

但同样,我不太确定如何收听 ActiveMQ 队列中的新消息,还是 Camel 默认情况下总是会这样做?此外,我需要将消息作为帖子正文传递给我的休息端点。我还看到了一些对 camel-http4 和 camel-http 的引用,我完全糊涂了。

任何帮助将不胜感激。

0 投票
1 回答
293 浏览

apache-camel - Apache Camel http4 检测端点协议

我正在使用 Camel 2.18.1 并且有一个类似于的 http4 路由

{{servicename}} 通过 BridgePropertyPlaceholderConfigurer 加载,以便我可以在不同环境中指定端点。

我刚刚遇到的问题是我的一些测试环境不是 https 并且路由失败,因为它似乎试图强制 https 通信。

我以前使用过码头生产者,您可以在 {{ servicename }} 中指定 http 或 https 并且它会自动协商它,但是 http4 似乎只允许主机名:端口。

如何管理不同环境之间的本地化,以便它可以与 http 或 https 端点一起使用?

谢谢