扫描操作等同于 HBase 中的查询。您可以使用扫描操作来检索多行。指定结果中的列应当是什么列,同时指定如何使用 uri 选项或标头将值转换为对象。
<route>
<from uri="direct:in"/>
<to uri="hbase:mytable?operation=CamelHBaseScan&family=myfamily&qualifier=myqualifier&valueType=java.lang.Long&rowType=java.lang.String"/>
<to uri="log:out"/>
</route>
<route>
<from uri="direct:in"/>
<to uri="hbase:mytable?operation=CamelHBaseScan&family=myfamily&qualifier=myqualifier&valueType=java.lang.Long&rowType=java.lang.String"/>
<to uri="log:out"/>
</route>
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
<route>
<from uri="direct:scan"/>
<!-- Set the Criteria -->
<setHeader headerName="CamelHBaseFamily">
<constant>name</constant>
</setHeader>
<setHeader headerName="CamelHBaseQualifier">
<constant>first</constant>
</setHeader>
<setHeader headerName="CamelHBaseValue">
<el>in.body.firstName</el>
</setHeader>
<setHeader headerName="CamelHBaseFamily2">
<constant>name</constant>
</setHeader>
<setHeader headerName="CamelHBaseQualifier2">
<constant>last</constant>
</setHeader>
<setHeader headerName="CamelHBaseValue2">
<el>in.body.lastName</el>
</setHeader>
<!-- Set additional fields that you want to be return by skipping value -->
<setHeader headerName="CamelHBaseFamily3">
<constant>address</constant>
</setHeader>
<setHeader headerName="CamelHBaseQualifier3">
<constant>country</constant>
</setHeader>
<to uri="hbase:mytable?operation=CamelHBaseScan&filters=#myFilterList"/>
</route>
<bean id="myFilters" class="java.util.ArrayList">
<constructor-arg>
<list>
<bean class="org.apache.camel.component.hbase.filters.ModelAwareColumnMatchingFilter"/>
</list>
</constructor-arg>
</bean>
<route>
<from uri="direct:scan"/>
<!-- Set the Criteria -->
<setHeader headerName="CamelHBaseFamily">
<constant>name</constant>
</setHeader>
<setHeader headerName="CamelHBaseQualifier">
<constant>first</constant>
</setHeader>
<setHeader headerName="CamelHBaseValue">
<el>in.body.firstName</el>
</setHeader>
<setHeader headerName="CamelHBaseFamily2">
<constant>name</constant>
</setHeader>
<setHeader headerName="CamelHBaseQualifier2">
<constant>last</constant>
</setHeader>
<setHeader headerName="CamelHBaseValue2">
<el>in.body.lastName</el>
</setHeader>
<!-- Set additional fields that you want to be return by skipping value -->
<setHeader headerName="CamelHBaseFamily3">
<constant>address</constant>
</setHeader>
<setHeader headerName="CamelHBaseQualifier3">
<constant>country</constant>
</setHeader>
<to uri="hbase:mytable?operation=CamelHBaseScan&filters=#myFilterList"/>
</route>
<bean id="myFilters" class="java.util.ArrayList">
<constructor-arg>
<list>
<bean class="org.apache.camel.component.hbase.filters.ModelAwareColumnMatchingFilter"/>
</list>
</constructor-arg>
</bean>
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
上面的路由假定 pojo 具有属性 firstName,而 lastName 则作为消息正文传递,它会采用这些属性并将它们作为消息标头的一部分来添加。默认映射策略会创建一个模型对象,它将标头映射到 HBase 列,并将模型用于 ModelAwareColumnMatchingFilter。过滤器将过滤出任何行,它们不包含与模型匹配的列。它类似于以下示例查询。