问题标签 [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.
apache-camel - Camel JPA 组件路由未完全执行
我使用 JPA 组件创建了一个简单的路由
在控制台中,我可以看到正在触发的查询
但在此之后我看不到日志被打印出来,处理器也没有被执行。延迟后,查询继续触发,但没有异常,并且路由处理未完成。日志没有打印,处理器也没有被调用。我更改了日志级别仍然没有异常。
我只想让我的路线完成它的执行,这样我就可以在处理器中写一些东西。
相同的查询给出数据库中的所有行。
请提出问题所在?
spring-boot - Spring-boot Camel SQL中的ResultSet缓存
我已经实现了一个每 5 分钟运行一次的Spring-boot Camel批处理应用程序,它使用camel-sql组件从表中查询一些数据。我正在使用 java DSL 实现并在内部配置我的路由端点RouteBuilder.configure
。一切都按预期正常工作。但现在作为优化的一部分,我计划缓存一些不经常更改的查询结果,如一些全局配置表、位置时区表等。
我已经阅读了Camel EHcache文档,但没有正确理解标准的实现方式。
我的期望如下
假设我的路由是,
我不想总是SqlComponent2
访问数据库,它应该使用第一次执行的缓存值,过期时间为 1 周。
另外我只是想知道在这种情况下哪个是最好的缓存实现。
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,似乎所有工作都在此路由中,并且接收者路由应该发生在相同的事务上下文中。我对么?
apache-camel - Sql 组件:使用多行并使用 onConsume 将它们全部标记为已处理
我将骆驼 sql 组件配置为从数据库表中读取数据。当我一次读取一行时,我有“onConsume”参数工作,但当我尝试使用“maxMessagesPerPoll”一次读取多行时不起作用。这是我尝试过的...
工作:当我一次读取一行并使用 onConsume 更新该行时。
我的消费者端点 uri 看起来像:
不工作:当我配置骆驼的 sql 组件以读取可配置的行时(使用“maxMessagesPerPoll”)。它一次读取多行,但 onConsume 似乎不起作用。我试图告诉骆驼使用 IN 运算符并使用 IN 子句的值数组设置标题值(REPORT_ID)。
我的消费者端点 uri 现在看起来像:
我可能在这里做错了什么。我已经对此进行了足够的搜索,并找到了相关的 post1,post2。但这并没有让我走上正确的道路。
我需要能够将所有消耗的行标记为 IS_VIOLATED = 'N' 。
谢谢你的帮助。
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 内存吗?
谢谢。
apache-camel - 使用包含日期范围的 sql 的骆驼端点 URI
我指定了一个端点,其中包含一个 sql 组件的 URI:
我将 startDate 和 endDate 设置为标题。在这种情况下,我收到错误消息: com.microsoft.sqlserver.jdbc.SQLServerException:关键字“between”附近的语法不正确
如果我试图避免介于两者之间,并添加如下两个子句:ChangeDate >= :#startDate 和 ChangeDate <= :#endDate,我收到其他错误: 与元素类型“null”关联的属性“uri”的值不能包含“<”字符
(我也试过 :#endDate>=ChangeDate ,但它也不起作用!:-( )。
你能就此提出建议吗?
谢谢!
apache-camel - 访问骆驼正文内容以动态加载 SQL 语句 - org.apache.camel.RuntimeCamelException
骆驼SQL 2.22.1
在我的路线中,我有:
从控制台我看到:
我想使用这个值来选择使用 SQLComponent 执行哪个 sql 语句。
我有 sql.properties 文件:
在我的路线中,我知道这有效:
但我想这样做(或以某种方式实现):
这在部署到 Tomcat 时给了我一个骆驼运行时异常。
我已经尝试了该语句的许多变体,但均未成功。有三个问题:
- 如何动态设置 sqlcomponent 将用于获取适当 sql 的值?
- 如何正确地从正文中检索值?
- 有一个更好的方法吗?
非常感谢,这是有史以来最好的网站!
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?
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
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