问题标签 [apache-camel-cdi]
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.
apache-camel - 无法在处理器中注入 bean
我正在尝试@BeanInject
在处理器中使用,但它始终是null
.
如果处理器类在其自己的文件中RouteBuilder
定义,我可以访问 a 中的 bean ,也可以访问处理器中的 bean。RouteBuilder
这是不支持还是我错过了什么?
[更新] 我使用的是 Apache Camel 2.17.2,代码取自 camel-example-cdi 下面的代码在第一个处理器中打印对象实例,但不是在第二个处理器中。代码在单元测试中运行。
处理器
java - 野蝇骆驼子系统中未加载 log4 文件
这是我的环境
- Wildfly 12.0.0.Final
- WildFly-Camel 6.1.0(WildFly-Camel 6.1.0 提供 Camel-2.21.1 与 WildFly-12.0.0 的集成)
- Oracle jdk 1.8.0_112 64 位
我创建了一个 Maven 项目
- 组 ID:org.wildfly.camel.archetypes
- 工件 ID:wildfly-camel-archetype-cdi
- 版本:6.1.0
我已经编写了以下路线
而且我还编写了以下 log4j2 xml 配置文件。它位于 src/main/resources 目录下。在目标 WAR 中,该文件位于WEB-INF\classes\log4j2.xml
当我将生成的战争部署到使用 Wildfy-camel 子系统修补的 Wildfly 12 服务器中时。我使用了没有更改的standalone-camel-full.xml配置文件。我可以在 server.log 中看到以下几行。
这正是我想要记录的。但是没有创建在我的 log4j 文件中配置的附加程序。一切都记录在 Wildfly 12 服务器的 server.log 下。
在 Wildfly Camel文档中,我找不到任何有关日志记录的参考。Wildfly 12管理指南,日志配置讨论了一个名为use-deployment-logging-config的参数,该参数将包含在配置 xml (standalone-camel-full.xml) 的日志子系统部分中
从文档
使用部署日志配置
use-deployment-logging-config 控制是否扫描您的部署以获取每个部署的日志记录。如果设置为 true,则启用默认的按部署日志记录。设置为 false 以禁用此功能。
9.4.2. 每次部署日志
每次部署日志记录允许您将日志记录配置文件添加到部署中,并根据配置文件配置该部署的日志记录。在 EAR 中,配置应该在 META-INF 目录中。在 WAR 或 JAR 部署中,配置文件可以位于 META-INF 或 WEB-INF/classes 目录中。
允许使用以下配置文件:
日志记录属性
jboss-logging.properties
log4j.properties
log4j.xml
jboss-log4j.xml
您还可以通过将 use-deployment-logging-config 属性更改为 false 来禁用此功能。
我已经测试了从 log4j2.xml 到 log4j.xml 的 log4 文件的名称,但它仍然没有加载。
我还在standalone-camel-full.xml 文件中设置了use-deployment-logging-config 属性。即使在文档中说它默认为true。同样的结果。我的日志文件没有创建。
我认为文件甚至没有加载,就好像我在其中犯了语法错误一样,在部署或服务器启动期间永远不会显示该错误。
这也是我来自 Eclipse IDE 的有效 pom.xml,以防缺少依赖项
任何想法为什么我的文件没有加载?
apache-camel - Camel-Cdi 没有使用 Registery 注入 CamelContext
我正在使用camel-cdi,它正在注入CamelContext,检测项目中的所有路由。但是我想要一个带有注册表的 CamelContext,因为我有一些在骆驼路线中使用的组件,如下所示。
当我注入 CamelContext 时,无法识别 actionProcess、jpa 等组件。在我的路线中,我有
但我的 bean 没有被执行。我阅读的文档在注册表中的组件名称之前使用了#,但它仍然无法正常工作。
请建议我如何使用 camel-cdi 实现这一目标。
java - 在 Apache 中迭代用户用户定义的集合来了路线
我在主路线和子路线上有一个要求。在主路由中将获取对象列表,我需要为列表中的每个单独元素调用子路由。然后在子路由中,将通过将该元素附加为参数之一来调用 Web 服务。
代码:
我将值设置为交换体,如下所示,
但是上面的代码示例不起作用,如果有人告诉我们骆驼中是否有任何方法可以在路由级别迭代用户定义的集合。
谢谢, 拉格万
java - Camel - 如何为 HTTP 代码 500 系列配置重新传递
我已将重新交付相关属性配置如下。事实上,我只想重试 HTTP Code 500x 系列。但我看到 onException() 只接受异常类型。如何做到这一点?我的应用程序是基于弹簧靴和骆驼的。
Camel 2.23 是我正在使用的版本(根据评论)。
java - 来自子路由的交换头数据在骆驼主路由中不可用
这是我的主要路线,
- 现在我在子路由(direct:AgencyCredentialProcessing)上的交换标头中设置一个值,一旦控制返回主路由就不可用。我需要对子路由范围内的交换更改进行哪些配置更改,这些更改也应该在主路由上可见。
提前致谢, 拉格万
java - Payara 中的 Apache Camel:查找“java:/TransactionManager”失败
我想在部署到 Payara 服务器的战争项目中使用 Apache Camel,但是一旦我将 camel-cdi jar 添加到项目中,部署应用程序就会失败
部署应用程序 [TheProject-1.0-SNAPSHOT] 时出现异常:资源的 JNDI 查找失败:名称:[java:module/env/org.apache.camel.cdi.transaction.JtaTransactionPolicy/transactionManager],查找:[java:/ TransactionManager],类型:[java.lang.String]
javax.naming.NamingException:查找“java:/TransactionManager”失败
我在这里有什么选择?有没有办法解决这个 JNDI 问题,或者在没有 CDI 的情况下使用 Camel 是否可行?我没有做任何实际需要 TransactionManager 的事情。
我不想添加 Spring 依赖项。
我正在使用 Payara 5.191 并尝试过 Camel 2.23.1 和 3.0.0-M1。
完整的堆栈跟踪
apache-camel - 如何使用 Apache Camel Routes 执行 Arquillian 测试
我是 Apache Camel 的新手。我编写了简单的程序来使用骆驼路线将文件放置到另一个位置。我为此编写了 Junit 和 Mock 测试。
这是我的 simpleCamelRoute.java
这是 SimpleCamelRouteTest.java
这是我的 application.yml 文件
就像我通过 MockEndPoints 尝试使用模拟测试一样。
我已经浏览了 Apache Camel 官方网站:https : //camel.apache.org/cdi-testing.html 但我不明白通过 Camel Arquillian 集成测试进行测试的流程。
如何通过 Arquillian 测试我的项目。
java - Apache Camel - exchange.getIn().getBody(ZipFile.class) 返回 NULL 但 exchange.getOut().setBody(zipfile) 工作正常
我正在尝试将消息(字符串)压缩到 zip 文件中,然后将其设置为 Apache Camel 中的交换对象的主体,以便下游服务之一(也使用 Apache Camel)能够提取 zip文件使用exchange.getIn().getBody()
方法。
第一部分很好,我可以将 zip 文件设置body
为. 事实上,它本身就是.exchange.getIn().getBody(ZipFile.class)
null
body
null
为什么会这样?
我试过在正文中发送一个普通的字符串,效果很好。文件(ZipFile)没有设置,想知道为什么。
以下是代码片段 -
路线 -
压缩文件 -
在另一个服务(队列末尾)中,我重写了process()
如下所示的方法,以便能够从压缩文件中的文件中提取消息(字符串)。
依赖项 -
我希望正文的内容在in
andout
空间中是相同的。唉,事实并非如此。
apache-camel - Apache Camel:创建多个路线是否成本高昂?
以下只是要求:
- 从数据库读取
- 从数据中创建 3 个文件,仅在 if 语句上添加少量 setter
- 将 3 发送到相同的 sftp
编码:
这只能在 3 条路由中完成,即定时器路由、触发路由和从 3 到最后的单条路由。
只是想问如果部署50个类似类型的项目,创建多条路线是否被认为是昂贵的操作?