143.5. Spring Boot Auto-Configuration
组件支持 4 个选项,如下所列。
Name | 描述 | 默认值 | 类型 |
---|---|---|---|
camel.component.hbase.configuration | 使用共享配置。选项是 org.apache.hadoop.conf.Configuration 类型。 | 字符串 | |
camel.component.hbase.enabled | 启用 hbase 组件 | true | 布尔值 |
camel.component.hbase.pool-max-size | HTable 池中每个表保留的最大引用数。默认值为 10。 | 10 | 整数 |
camel.component.hbase.resolve-property-placeholders | 启动时组件是否应解析自身上的属性占位符。只有属于 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
143.5.1. Put Operations。 复制链接链接已复制到粘贴板!
HBase 是一个基于列的存储,允许您将数据存储在特定行的特定列中。列分组到系列中,因此要指定您需要指定列中的列,以及该列的限定符。要将数据存储至特定的列中,您需要同时指定列和行。
将数据存储到 camel 路由中的数据的最简单场景是将消息正文的一部分存储到指定的 HBase 列。
上面的路由假定消息正文包含一个具有 id 和 value 属性的对象,并将值的内容存储在由 id 指定的行中的 HBase 列 myfamily:myqualifier 中。如果需要指定多个列/值对,我们可以只指定额外的列映射。请注意,您必须使用 2nd 标头中的数字,如 RowId2、RowId3, RowId4 等。只有 1 个标头没有数字 1。
务必要记住,您可以使用 uri 选项、消息标头或两者的组合。建议将 constants 指定为 uri 和 dynamic 值的一部分作为标头。如果某个内容同时定义为 uri 的标头和部分,则将使用标头。
143.5.2. 获取操作. 复制链接链接已复制到粘贴板!
Get Operation 是一个操作,用于从指定的 HBase 行中检索一个或多个值。要指定您要检索的值,只需将它们指定为 uri 或 message 标头的一部分。
在上例中,get 操作的结果将存储为名为 CamelHBaseValue 的标头。
143.5.3. 删除操作. 复制链接链接已复制到粘贴板!
您还可以 camel-hbase 来执行 HBase 删除操作。删除操作将删除整个行。所有需要指定的内容都是作为消息标头的一部分的一个或多个行。
143.5.4. 扫描操作. 复制链接链接已复制到粘贴板!
扫描操作等同于 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>
在这种情况下,您还需要指定限制结果的过滤器列表。您可以将过滤器列表指定为 uri,camel 只返回满足所有过滤器的行。
要有一个过滤器,它将了解作为消息一部分的信息,camel 定义 ModelAwareFilter。这将允许您的过滤器考虑消息和映射策略定义的模型。
当使用 ModelAwareFilter camel-hbase 时,会将所选映射策略应用到消息中,会创建一个对映射模型的对象,并将将该对象传递给 Filter。
例如,要使用 作为消息标头来执行扫描,您可以使用 ModelAwareColumnMatchingFilter,如下所示。
以上路由假设 pojo 带有属性 firstName,lastName 作为消息正文传递,它会获取这些属性,并将它们作为消息标头的一部分添加。默认映射策略会创建一个模型对象,它将标头映射到 HBase 列,并将为该模型传递 ModelAwareColumnMatchingFilter。过滤器将过滤掉任何行,这些行不包含与模型匹配的列。例如,它类似于查询。