问题标签 [camel-sql]

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 回答
128 浏览

apache-camel - Camel JPA 组件路由未完全执行

我使用 JPA 组件创建了一个简单的路由

在控制台中,我可以看到正在触发的查询

但在此之后我看不到日志被打印出来,处理器也没有被执行。延迟后,查询继续触发,但没有异常,并且路由处理未完成。日志没有打印,处理器也没有被调用。我更改了日志级别仍然没有异常。

我只想让我的路线完成它的执行,这样我就可以在处理器中写一些东西。

相同的查询给出数据库中的所有行。

请提出问题所在?

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

apache-camel - Camel Split/RecipientList 线程和事务边界

在 Apache Camel 2.20.2 中,我创建了一个带有 split() 和 recipientlist() 的路由。我希望每个 Exchange 的整个路由和收件人都发生在同一个事务中。我对 Camel 何时使用单独的线程和事务边界感到困惑。我已经阅读了 Camel 文档并梳理了网络上的各种文章/论坛。我正在寻找一个确定的答案。

在骆驼我有这条路线:

在 Spring 上下文中,我定义了事务管理:

当我运行该路线时,似乎对 Datasource1 和 Datasource2 的更新发生在单独的事务中。此外,Datasource1 的 SelForUpdate.sql 和 UpdateDateProcessed.sql 似乎发生在单独的事务中。

我的问题是,这段代码中创建的新线程在哪里,事务边界在哪里?我将如何在一个事务上下文中发生这种情况?

在阅读 Apache Camel Developer's Cookbook 时,我了解 Split 和 RecipientList 模式都使用相同的线程进行所有处理(除非使用并行处理)。使用我创建的 SpringTransactionPolicy bean,似乎所有工作都在此路由中,并且接收者路由应该发生在相同的事务上下文中。我对么?

0 投票
2 回答
967 浏览

apache-camel - Sql 组件:使用多行并使用 onConsume 将它们全部标记为已处理

我将骆驼 sql 组件配置为从数据库表中读取数据。当我一次读取一行时,我有“onConsume”参数工作,但当我尝试使用“maxMessagesPerPoll”一次读取多行时不起作用。这是我尝试过的...

工作:当我一次读取一行并使用 onConsume 更新该行时。

我的消费者端点 uri 看起来像:

不工作:当我配置骆驼的 sql 组件以读取可配置的行时(使用“maxMessagesPerPoll”)。它一次读取多行,但 onConsume 似乎不起作用。我试图告诉骆驼使用 IN 运算符并使用 IN 子句的值数组设置标题值(REPORT_ID)。

我的消费者端点 uri 现在看起来像:

我可能在这里做错了什么。我已经对此进行了足够的搜索,并找到了相关的 post1post2。但这并没有让我走上正确的道路。

我需要能够将所有消耗的行标记为 IS_VIOLATED = 'N' 。

谢谢你的帮助。

0 投票
0 回答
1130 浏览

spring-boot - Camel-SQL 为什么使用 StreamList 似乎加载了所有的 ResultSet?

你好,

我想做什么?

我目前正在研究一个 ESB 项目(apache-camel + spring boot 2),我在其中读取了一个超过 100 000 000 行的 MySQL 表。我一次清空该表 1 行,转换该行并将其发送到另一个数据库。

我该怎么做?

目前我使用 camel-sql 读取数据

//edited .from(sql:SELECT * FROM mytable?outputType=StreamList&outpuClass=MyClass) .split(body()).streaming() .bean(mybean, "transform") .end()

问题 :

由于我无法选择 * 并在我的 RAM 中获取所有 100M 行,因为它可能不够大,所以我想使用流。

因此:似乎使用 StreamList 作为 outputType 仍然首先获取所有行,然后才将其作为“流”(ResultSet)返回。

问题

难道我们不能只使用 PreparedStatement 的属性来真正“一次一行”地从我的数据库中流式传输数据,而不是一次获取所有数据并破坏我的 VM 内存吗?

谢谢。

0 投票
1 回答
172 浏览

apache-camel - 使用包含日期范围的 sql 的骆驼端点 URI

我指定了一个端点,其中包含一个 sql 组件的 URI:

我将 startDate 和 endDate 设置为标题。在这种情况下,我收到错误消息: com.microsoft.sqlserver.jdbc.SQLServerException:关键字“between”附近的语法不正确

如果我试图避免介于两者之间,并添加如下两个子句:ChangeDate >= :#startDate 和 ChangeDate <= :#endDate,我收到其他错误: 与元素类型“null”关联的属性“uri”的值不能包含“<”字符

(我也试过 :#endDate>=ChangeDate ,但它也不起作用!:-( )。

你能就此提出建议吗?

谢谢!

0 投票
2 回答
1257 浏览

apache-camel - 访问骆驼正文内容以动态加载 SQL 语句 - org.apache.camel.RuntimeCamelException

骆驼SQL 2.22.1

在我的路线中,我有:

从控制台我看到:

我想使用这个值来选择使用 SQLComponent 执行哪个 sql 语句。

我有 sql.properties 文件:

在我的路线中,我知道这有效:

但我想这样做(或以某种方式实现):

这在部署到 Tomcat 时给了我一个骆驼运行时异常。

我已经尝试了该语句的许多变体,但均未成功。有三个问题:

  1. 如何动态设置 sqlcomponent 将用于获取适当 sql 的值?
  2. 如何正确地从正文中检索值?
  3. 有一个更好的方法吗?

非常感谢,这是有史以来最好的网站!

0 投票
1 回答
1426 浏览

apache-camel - 使用 Apache Camel SQL 存储过程组件访问 OUT 参数

我正在使用Apache Camel 的 SQL Stored Procedure Component调用 Oracle 存储过程。

我正在调用的存储过程有几个 OUT 参数,它们都作为字符串在 BODY 中返回,例如:

{param1=0, param2=-, param3=<?xmlversion="1.0"?><Client><Item><PHONE>1234567890</PHONE></Item></Client>}

目前我正在标记/解析 BODY 以便能够提取参数。这可行,但效率不高(并且容易出错)。

我的代码如下所示:

是否有直接访问param1,param2等的直接方式而无需解析 BODY?

0 投票
1 回答
941 浏览

apache-camel - Apache Camel sql-component 无法转换为内部表示

当我使用sql-compenent从数据库中检索记录时Map<String,Object>就可以了。

但是,当我这样定义时outputClass

我得到了错误java.sql.SQLException: Fail to convert to internal representation

我的outputType

使用2.22.2

0 投票
0 回答
152 浏览

spring-boot - camel-sql 消费者在每个批次问题中轮询新记录

在我的代码中,我有一个 camel-sql 消费者,它在默认的 consumer.delay=500 上运行,每次轮询的 Max msg 为 5。

消费者正在从 Customer 表中获取数据,并在 Customer_status 表上加入(Customer.Cust_id = Customer_status.Cust_id,其中 Customer_status.Cust_id 为 NULL)。

维护 Customer_status 的想法是维护已处理记录的状态并确保下一批没有上一批的记录(根据加入条件)

但是在程序运行期间,一些批次的记录是在较早的批次中提取的。

所以我正在寻找一种方法来帮助我在每批中保持独特性。因为我的方法不是 100% 有效。

将 Camel 与 Springboot DB 一起使用:Oracle