问题标签 [spring-camel]

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 投票
0 回答
54 浏览

java - 无法使用带有 isOrdered 属性的 apache bindy 生成 csv

这是我的模型:

Bean处理器代码:

RouteBuilder 代码:

如果我省略 isOrdered=true 属性,则会生成 csv 文件。

但是我想对生成的 csv 中的列重新排序,如果模型中包含 isOrdered 属性,则根本不会生成 csv 文件。

将不胜感激任何帮助。

谢谢。

0 投票
1 回答
882 浏览

apache-camel - 骆驼交换无一例外失败

在从 Camel 2.1 升级到 2.17 和一些代码修改后,我们在 Camel 中的异常处理方面遇到了一些问题。我们从应用 A 向应用 B 发送消息。快乐的流程可以正常工作,但不快乐的流程不能。

我们发送消息以导致异常,但在onexception块中未正确处理。

实际上,我们看到以下跟踪日志:ProcessTaskEx - message received,但我没有看到:ProcessTaskEx - exception

我们从 Camel 得到的例外是:

我们的路线看起来像这样,知道问题可能是什么吗?非常感谢您的时间社区!:)

0 投票
1 回答
1097 浏览

apache-camel - OnException maximumRedeliveries 被忽略

在以下路线中,当我们遇到异常时,将忽略 redeliveryPolicy 中的 maximumRedeliveries 子句。我们得到:

(MessageId: ID-UW205584-58231-1527668174534-39-248 on ExchangeId: ID-UW205584-58231-1527668174534-39-24) 传递失败。交付尝试:0

(MessageId: ID-UW205584-58231-1527668174534-39-248 on ExchangeId: ID-UW205584-58231-1527668174534-39-24) 传递失败。交付尝试:1

然后它保持在无限循环中,重复最后一次重试。任何想法?非常感谢社区!

我们的路线如下所示:

0 投票
0 回答
527 浏览

encryption - 骆驼 2.21.0 - pgp 加密不起作用

尝试使用最新的 camle 的 pgp 加密,但看到Caused by: java.lang.NoSuchMethodError: org.bouncycastle.openpgp.PGPPublicKeyRingCollection错误,我检查了类路径上的骆驼和充气城堡罐子的正确版本,还尝试了最新的 1.59 bc 版本。- 我错过了什么吗?



测试路线:

编辑:还检查了运行时这些 jar 是否在类路径中::~/.m2/repository/org/bouncycastle/bcpg-jdk15on/1.57/bcpg-jdk15on-1.57.jar:~/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.57/bcprov-jdk15on-1.57.jar:

所以事实证明 jdk 版本不是问题,但问题是当我们在 java 安装$JAVA_HOME/jre/lib/ext目录中重命名较旧的 bc jar 时,.out我们假设这些 jar 没有被加载到类路径上,但似乎它们确实被加载了。当我从 中完全删除这些旧 jar 时 $JAVA_HOME/jre/lib/ext,一切都适用于 java 8 版本 121 和 172。

0 投票
2 回答
433 浏览

apache-camel - 使用 Apache-Camel Spring 启动器时无法扩展 SpringBootServletInitializer

我正在尝试按照他们的文档从 Spring Boot 应用程序创建可部署的 *.war。我在扩展 SpringBootServletInitializer 时遇到问题。它给了我一个编译时错误说The type org.springframework.web.WebApplicationInitializer cannot be resolved. It is indirectly referenced from required .class files。但是在 Maven 依赖目录中我可以清楚地看到SpringBootServletInitializer.class存在于spring-boot-1.5.10.RELEASEjar 中。它是作为camel-spring-boot-starter依赖项的一部分下载的。

我的主课

}

我的 pom.xml

我在哪里错了?我注意到如果我使用spring-boot-starter-web依赖项,那么这不会给我任何错误,但我已经有了camel-spring-boot-starter,所以我不应该需要spring-boot-starter-web. 谁能解释这里到底出了什么问题?提前致谢。

0 投票
1 回答
468 浏览

spring-boot - Spring-boot Camel SQL中的ResultSet缓存

我已经实现了一个每 5 分钟运行一次的Spring-boot Camel批处理应用程序,它使用camel-sql组件从表中查询一些数据。我正在使用 java DSL 实现并在内部配置我的路由端点RouteBuilder.configure。一切都按预期正常工作。但现在作为优化的一部分,我计划缓存一些不经常更改的查询结果,如一些全局配置表、位置时区表等。

我已经阅读了Camel EHcache文档,但没有正确理解标准的实现方式。

我的期望如下

假设我的路由是,

我不想总是SqlComponent2访问数据库,它应该使用第一次执行的缓存值,过期时间为 1 周

另外我只是想知道在这种情况下哪个是最好的缓存实现。

0 投票
1 回答
1791 浏览

java - 无法在类 org.apache.camel.builder.DeadLetterChannelBuilder 上找到属性描述符 useOriginalBody

我正在尝试使用 deadLetterChannelBuilder 但找不到正确的属性。有谁知道它们是什么或在哪里可以找到它们?文档中的那个似乎不起作用。?

无法在类 org.apache.camel.builder.DeadLetterChannelBuilder 上找到属性描述符 useOriginalBody

我也尝试过 allowUseOriginalMessage 但正如预期的那样,它不是 deadLetterChannelBuilder 属性。

0 投票
0 回答
734 浏览

java - Apache Camel:自动记录/持久交换路由的每个处理器/组件的信息

使用Apache Camel时,我想在路由的每个处理器/组件之前自动保留交换信息,而不在路由中使用窃听处理器,其中 errorHandlers 也应用于路由。我尝试使用interceptStrategy,但是在路由中应用errorHandlers时不会触发拦截器。我还了解到,使用自定义 InterceptStrategy 并不适合最终用户。有人知道这个的替代方案吗?


我们目前正在研究EventNotifierSupport@RomanVottner 提到的实施。通过下面的实现,我们注意到ExchangeSentEvent某些处理器/端点的发送是重复的。 为什么 ExchangeSentEvent 会针对同一个处理器操作多次发送?

context.getManagementStrategy().addEventNotifier(new RouteHistoryEventNotifier());

控制台输出:

您还可以查看OpenTracingEventNotifierZipkinEventNotifier作为示例

0 投票
2 回答
4891 浏览

java - Camel doCatch 和 onException 优先级

我有一个带有 doTry() 的路由 - doCatch() 对用于特定路由和 onException() 通常。

内部路由抛出一个普通的 java.lang.Exception

我希望在 doCatch() 中捕获异常并执行日志记录和处理操作。但是,改为调用 onException()。

onException() 是否有更高的优先级?据我了解,本地捕捞更为优先。

PS 删除 onException() 会调用 doCatch()。但是我有理由保留两者。骆驼版是:org.apache.camel:camel-cxf:2.21.0.000033-fuse-000001-redhat-1

0 投票
1 回答
699 浏览

spring-boot - RabbitMQ:ConnectionFactory 给出“连接被拒绝”,但我可以在一个 .to() 中编写所有内容

骆驼新用户在这里。

我有一个 Spring Boot / Camel 应用程序并成功获得了一个路由,该路由轮询 REST 端点,将 JSON 数组拆分为自定义 POJOS,将每个数组转换为我们的 Protobuf 之一,然后将 protobuf 写入我们的 RabbitMQ。

到现在为止还挺好。

然而,我花了相当多的工作来调试并让最后一步正常工作(写到总线上)。基本上,我永远无法使用 ConnectionFactory 建立与总线的连接,而是最终通过仅使用DSL 中的 .to() 语句将整个连接/写入到总线来弄清楚如何做到这一点。

所以我真的很想知道我在 ConnectionFactory 上做错了什么。任何帮助将非常感激!

好的,这就是有效的:

(为清楚起见添加了换行符)

实际上,我在这里有一个快速的问题:在连接没有被池化并且每次写入都建立连接的意义上,执行上述操作是否浪费?

好的,这是没有用的,一直给我一个java.net.ConnectException: Connection refused错误:

那我错过了什么??

对于它的价值,如果上述连接有效,我将使用以下 .to() 语句编写总线。它看起来正确吗?特别是,我可以在“rabbitmq:”之后指定任何内容来代替“bogusbus”吗?

非常感谢你的帮助!