我尝试使用camel的jdbc组件。我在这里找到了文档:http://camel.apache.org/jdbc.html。
它的效果很好,因为结果可以从数据库中获得,但是在文档中提到的名为CamelJdbcColumnNames
的排队答案中没有标题。
我所能看到的是CamelJdbcRowCount
。我的骆驼版本是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
。有了这个我想调试邮件头。这是我的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}
最后一个变量/值对是CamelJdbcRowCount=837
,在我看来它以某种方式工作。但是为了进一步处理,我想处理列名。那么:如何获得CamelJdbcColumnNames
?
答案 0 :(得分:1)
现在好了,因为你将数据发送到JMS端点。 JMS规范仅支持JMS头/属性的许多数据类型。这通常是字符串,数字和原始类型。
您可以在Camel JMS文档页面以及JMS规范/ javadoc中阅读有关此内容的更多信息。
列名标题存储为Java集合类型的标头,JMS不支持。
如果启用Camel跟踪器,您应该能够在将消息路由到JMS端点之前看到标头:http://camel.apache.org/tracer