问题标签 [apache-camel-3]

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 投票
3 回答
2567 浏览

testing - Camel 3:如何使用 `interceptSendToEndpoint` 拦截来自 `onException` 的路由

问题:

在从 Camel 2 迁移到 3 期间,我的错误路由测试失败了。

我遵循的模式是强制异常并断言该onException()块使用适当的标签发送到我的指标路由。

我正在使用 uri 模式匹配来单独测试每个标签是否被发出......这会强烈影响测试模式

注意:在下面的两个示例中,createRouteBuilder()方法是相同的

传递骆驼 2 示例

失败的骆驼 3 示例

没有接收交换,mockEndpoint而是仍然转到指标端点。

问题:

在 Camel 3 中,如何像在 Camel 2中使用模式一样拦截路线?手动测试显示错误路由在 prod 中的行为符合预期,因此这似乎是一个测试配置问题。

其他详情:

  • 来自骆驼回购的这个单元测试演示了我正在尝试做的事情,但是通过手动拦截路由而不是mock:直接在路由中使用。
  • 当我不需要模式匹配时,这种替代方法有效

    /li>
0 投票
2 回答
799 浏览

apache-camel - Camel JMS 组件缓存级别和 Spring 的 CachingConnectionFactory

根据 Apache camel 的文档,我们应该将缓存级别设置为 CACHE_CONSUMER,以便在处理非 XA 事务时获得更好的性能。可能他们这样做了,因为 PooledConnectionFactory 不缓存消费者。

我使用 Spring 的 CachingConnectionFactory 代替 PooledConnectionFactory,因为 PooledConnectionFactory 与 ActiveMQ 耦合,我正在处理 IBMMQ。

另一方面,CachingConnectionFactory 也缓存生产者和消费者。所以我希望在这种情况下,将 JmsComponent 的缓存级别设置为 CACHE_CONSUMER 是没有意义的。

如果我错了,请纠正我。任何建议都会有很大帮助

0 投票
1 回答
1263 浏览

spring-boot - 使用spring boot 2.2.4更新到camel 3.0.0-RC3后,Camel在文本属性中找不到{{xxx}}

我使用的是弹簧靴2.2.4.RELEASE和骆驼版2.23.0

为了使骆驼可以访问属性并在uri路由中使用它们{{ }}

添加camel-spring-boot-starter依赖和定义PropertySourcesPlaceholderConfigurerSpringCamelContextbean就足够了

--

现在,在我更新camel-spring-boot-starter3.0.0-RC3遵循迁移指南并修复了组件的导入之后。在运行时,骆驼找不到属性,我得到了这个:

Property with key [xxx] not found in properties from text: activemq:queue:{{xxx}}

任何想法发生了什么变化,为什么{{ }}我的路线不再起作用?


更新 1

我更新了弹簧靴来回,我2.2.6.RELEASE仍然得到同样的东西camel-spring-boot-starter......3.2.0org.apache.camel.springboot

路线并不花哨。

我需要{{ }}从中读取xxxmyProperties.properties

使用@Value("${xxx}")works,spring可以访问它,我可以将它传递给路由URI字符串。

在骆驼 URI 中访问{{xxx}}是更新后停止工作的原因。


更新 2

我反映了接受答案所做的测试。去除SpringCamelContextPropertySourcesPlaceholderConfigurer豆子就可以了。

我取出了豆子SpringCamelContext,它起作用了。显然,这个新的 spring camel starter 会SpringCamelContext自行处理,我的 bean 使用了与骆驼读取属性相关的自动配置{{ }}

我还删除了 bean PropertySourcesPlaceholderConfigurer,@Value 并没有停止工作。

0 投票
0 回答
205 浏览

spring-boot - 由于双斜杠,spring boot camel 3 camel-endpointdsl vs uri字符串不兼容//

我们正在从骆驼迁移2.x到骆驼3.x

我正在从这些路由定义格式转换使用 uri 字符串编写的路由

转为以下端点-dsl 格式:

问题是,URI 格式像这样注册路由:

但是新的camel dsl格式会像这样注册路由(没有//):

问题是使用附加到组件的双斜杠注册的路由(URI 行为)与没有双斜杠注册的路由不匹配(​​新的端点-dsl 行为)。

而且我必须将所有路由转换为使用 URI 或端点 dsl。否则我会收到错误消息,例如告诉路由没有消费者direct://loadConfiguration......因为from(direct("loadConfiguration"))是使用 dsl 定义的,并且它被注册为direct:loadConfiguration.

是否有一个配置选项可以让骆驼//在使用 URI 时不附加到组件或让骆驼忽略它//

0 投票
2 回答
391 浏览

spring-boot - 重要 onException shareUnitOfWork Apache Camel

使用 onException 时,我无法让它共享工作单元。我确实需要使用多播和拆分器。到目前为止,我已经尝试过诸如 useOriginalMessage 等,但无法成功。

流程;Apache CXF -> JAXRS-> 异常 -> OnException -> 处理器 -> 响应正文

0 投票
1 回答
282 浏览

apache-camel - AggregationStrategy 一直警告超时

为什么 AggregationStrategy 实现在超时时总是记录警告?发生这种情况时,我看不到聚合中的任何交换/数据丢失。

当完成超时要求满足时, AggregateProcessor 调用此超时方法。该事件的任何日志记录都可能是调试或信息性的,但不应引起警告。

这是我路线的汇总部分。

0 投票
1 回答
267 浏览

java - Apache Camel Endpoint-dsl 自定义组件名称

我正在尝试使用 Apache Camel 3 Endpoint DSL。到目前为止,这是我的代码。它工作正常。这是一个测试,所以它真的很简单。它从目录中读取并记录文件内容。

但是当我尝试更改组件的名称时。例如 final String componentName = "myCustomFileComponent";

我在控制台中收到以下错误

这里,我知道我可以为示例中的端点myWMQmyAMQ提供自定义名称。例如,路由从一个目录读取并写入另一个目录,我希望每个组件都以不同的方式进行配置。但是,如果我指定一个自定义组件名称,我会收到错误消息。因为它没有找到 custonName 组件。

我不知道它是否相关,但代码在 Spring Boot 项目中

  • Apache Camel 版本 3.4.0 Spring Boot 版本 2.3.1
0 投票
1 回答
173 浏览

spring-boot - Apache Camel 3.4 版超时未按预期工作

我正在使用这个 Spring Boot Apache Camel 版本

非常简单的场景,我试图将文件从一个文件夹复制到另一个文件夹。在理想情况下(没有给出超时),路由应该无限期地等待文件进入源文件夹。一旦文件来了,它应该选择它并再次循环并等待下一个。它适用于 Camel2.2,但不适用于最新版本。

代码:

任何骆驼专家的建议?

结果,我在输入目录中有 2 个文件。

使用camel2.2输出:

使用camel3.4 springboot输出:[ERROR ONCE input DIR IS EMPTY]

0 投票
0 回答
118 浏览

apache-camel - 停止+中断现有路线

我有一条正在等待锁的骆驼路线。让我们模拟如下:

在某个时间点,我想尽快停止这test条路线。有没有办法在中断当前处理这条路线的线程时停止这条路线?我尝试stopRoute如下,但这似乎并没有中断线程。

我正在使用 Camel 版本 3.4.x。

0 投票
1 回答
290 浏览

spring-boot - 在骆驼3中正确设置http套接字超时

拥有这个 Spring-XML 配置

socketTimeout is a custom option that is not part of the Camel component在 IntelliJ IDEA 中收到警告。
事实上,在骆驼文档中,我在组件选项中看到了 socketTimeout,上面代码片段中的其他选项在查询参数中,所以问题是是否应该以不同的方式指定 socketTimeout?正确的方法是什么?
提前致谢