【问题标题】:Apache Camel How do I access the Header values from an sql componentApache Camel 如何从 sql 组件访问 Header 值
【发布时间】:2018-05-01 00:44:30
【问题描述】:

我正在尝试使用属性 header.CamelSqlRowCount 打印 sql 组件选择的行数。然而,价值是空的。 如另一篇文章所述,我添加了跟踪以检查标头值,并且仅打印了 breadcrumbId。如果我做错了什么,谁能告诉我?

骆驼路线

        <endpoint id="sqlComponent" uri="sql:${sql.pollerQuery}?dataSource=DataSource&amp;consumer.delay=60000&amp;consumer.useIterator=false"/>
    <route id="root">
        <from ref="sqlComponent"/>
        <log message="Received ${header.CamelSqlRowCount} records from the poller query"/>
        <log message="Message Body= ${body}"/>
    </route>

记录的跟踪如下

DEBUG 2017-11-16 18:01:00 [Camel (camel-1) thread #0 - sql://SELECT%20ID%20FROM%20TABLE%20WHERE%20PUBLISHED%20=%20'N'] Executing query: SELECT ID FROM TABLE WHERE PUBLISHED = 'N'
INFO  2017-11-16 18:01:01 [Camel (camel-1) thread #0 - sql://SELECT%20ID%20FROM%20TABLE%20WHERE%20PUBLISHED%20=%20'N'] ID-MyMachine >>> (root) from(sql://SELECT%20ID%20FROM%20TABLE%20WHERE%20PUBLISHED%20=%20'N'?consumer.delay=60000&consumer.useIterator=false&dataSource=odsDataSource) --> log[Received ${header.CamelSqlRowCount} records from the poller query] <<< Pattern:InOnly, Headers:{breadcrumbId=ID-MyMachine}, BodyType:java.util.ArrayList, Body:[{ID=1}, {ID=2}, {ID=3}, {ID=4}, {ID=5}]
INFO  2017-11-16 18:01:01 [Camel (camel-1) thread #0 - sql://SELECT%20ID%20FROM%20TABLE%20WHERE%20PUBLISHED%20=%20'N'] Received  records from the poller query
INFO  2017-11-16 18:01:01 [Camel (camel-1) thread #0 - sql://SELECT%20ID%20FROM%20TABLE%20WHERE%20PUBLISHED%20=%20'N'] ID-BLRKEC381989D-52624-1510835442422-0-2 >>> (root) log[Received ${header.CamelSqlRowCount} records from the poller query] --> log[Message Body= ${body}] <<< Pattern:InOnly, Headers:{breadcrumbId=ID-MyMachine}, BodyType:java.util.ArrayList, Body:[{ID=1}, {ID=2}, {ID=3}, {ID=4}, {ID=5}]
INFO  2017-11-16 18:01:01 [Camel (camel-1) thread #0 - sql://SELECT%20ID%20FROM%20TABLE%20WHERE%20PUBLISHED%20=%20'N'] Message Body= [{ID=1}, {ID=2}, {ID=3}, {ID=4}, {ID=5}]

骆驼版 - 2.15.1

【问题讨论】:

  • 你检查过这个stackoverflow.com/questions/18572129/… 可能你得到一些提示
  • 尝试更新版本
  • 是的,我检查了那个链接。那里的问题是由于多播造成的。我的路线早些时候有一个拆分组件。检查后,我删除了拆分组件并制作了一个简单的路线,如上图所示,以验证问题不是由于拆分组件造成的。
  • 也不适用于骆驼 2.20.0 版

标签: apache-camel camel-sql


【解决方案1】:

此标头未设置在消费者上,仅在生产者上。您在邮件正文列表大小上有大小。您可以在 Apache Camel 上记录 JIRA 票证,以要求消费者也包含此标头。

【讨论】:

  • 感谢您提供详细信息。将属性 ${header.CamelSqlRowCount} 替换为 ${body.size()} 以获取计数。
  • 我在使用最新骆驼版本的 SQL 组件获取消费者插入/更新/删除操作的任何行计数时也遇到问题。 CamelSqlUpdateCount 和 CamelSqlGeneratedKeysRowCount 始终为空。 (看不到有关文档中不支持这些场景的任何信息。我​​移至 JDBC 组件,所有标头突然都有值:))
猜你喜欢
  • 1970-01-01
  • 2019-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多