CamelJdbcColumnNames header 未命中

CamelJdbcColumnNames header missed

我尝试使用 camel 的 jdbc 组件。我在这里找到了文档:http://camel.apache.org/jdbc.html.
它工作得很好,因为结果可以从数据库中获得,但是在文档中提到的名为 CamelJdbcColumnNames 的排队答案中没有 header。
我只能看到 CamelJdbcRowCount.我的 camel 版本是 2.15.1。

我必须打开开关才能启用它吗?

这是我的 spring-config.xml:

的摘录
<bean id="ds" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
    <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@myhost:1521:mydbsid"/>
    <property name="username" value="myuser"/>
    <property name="password" value="mypass"/>
</bean>

<route id="route db">
    <from uri="file://data/inbox" />
    <to uri="jdbc:ds" />
    <to uri="jms:sqlret" />
</route>

编辑:
为了排除 jms,我添加了一个 Processor。有了这个,我想调试消息 header。这是我的 spring-config.xml:

的新摘录
<bean id="jdbccheck" class="mypackage.JdbcCheck"></bean>
<route id="route db">
    <from uri="file://data/inbox" />
    <to uri="jdbc:ds" />
    <process ref="jdbccheck"/>
    <to uri="jms:sqlret" />
</route>

处理器代码:

public class JdbcCheck implements Processor {

    private static final Logger LOG = Logger.getLogger(JdbcCheck.class.getName());

    @Override
    public void process(Exchange exchange) throws Exception {
        LOG.info(exchange.getIn().getHeaders().toString());
    }
}

日志信息:

{breadcrumbId=ID-chris-HP-50597-1429955241877-0-1, CamelFileAbsolute=false, CamelFileAbsolutePath=C:\daten\chris\source\netbeans\GbLuna\data\inbox2\in.sql, CamelFileContentType=null, CamelFileLastModified=1429953640254, CamelFileLength=36, CamelFileName=in.sql, CamelFileNameConsumed=in.sql, CamelFileNameOnly=in.sql, CamelFileParent=data\inbox2, CamelFilePath=data\inbox2\in.sql, CamelFileRelativePath=in.sql, CamelJdbcRowCount=837} 

最后的 var-/value 对是 CamelJdbcRowCount=837,在我看来它以某种方式起作用。但为了进一步处理,我想处理列名。那么:如何得到CamelJdbcColumnNames?

好的,现在知道了,这是因为您将数据发送到 JMS 端点。而 JMS 规范只支持 JMS 的一些数据类型headers/properties。这通常是字符串、数字和原始类型。

您可以在 Camel JMS 文档页面和 JMS spec/javadoc.

中阅读更多相关信息

列名称 header 存储为 Java collection 类型的 header,JMS 不支持。

如果启用 Camel 跟踪器,您应该能够在消息路由到 JMS 端点之前看到 header:http://camel.apache.org/tracer