52.10. 使用基于 Infinispan 的聚合存储库
Java 示例
InfinispanEmbeddedConfiguration conf = new InfinispanEmbeddedConfiguration(); (1) conf.setConfigurationUri("classpath:infinispan.xml") InfinispanEmbeddedAggregationRepository repo = new InfinispanEmbeddedAggregationRepository("aggregation"); (2) repo.setConfiguration(conf); context.addRoutes(new RouteBuilder() { @Override public void configure() { from("direct:start") .aggregate(header("MessageID")) .completionSize(3) .aggregationRepository(repo) (3) .aggregationStrategy("myStrategy") .to("mock:result"); } });
InfinispanEmbeddedConfiguration conf = new InfinispanEmbeddedConfiguration(); (1)
conf.setConfigurationUri("classpath:infinispan.xml")
InfinispanEmbeddedAggregationRepository repo = new InfinispanEmbeddedAggregationRepository("aggregation"); (2)
repo.setConfiguration(conf);
context.addRoutes(new RouteBuilder() {
@Override
public void configure() {
from("direct:start")
.aggregate(header("MessageID"))
.completionSize(3)
.aggregationRepository(repo) (3)
.aggregationStrategy("myStrategy")
.to("mock:result");
}
});
- 配置缓存
- 创建存储库 bean
- 将存储库设置为路由
XML 示例
<bean id="infinispanRepo" class="org.apache.camel.component.infinispan.embedded.InfinispanEmbeddedAggregationRepository" destroy-method="stop"> <constructor-arg value="aggregation"/> (1) <property name="configuration"> (2) <bean class="org.apache.camel.component.infinispan.embedded.InfinispanEmbeddedConfiguration"> <property name="configurationUrl" value="classpath:infinispan.xml"/> </bean> </property> </bean> <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="direct:start" /> <aggregate aggregationStrategy="myStrategy" completionSize="3" aggregationRepository="infinispanRepo"> (3) <correlationExpression> <header>MessageID</header> </correlationExpression> <to uri="mock:result"/> </aggregate> </route> </camelContext>
<bean id="infinispanRepo" class="org.apache.camel.component.infinispan.embedded.InfinispanEmbeddedAggregationRepository" destroy-method="stop">
<constructor-arg value="aggregation"/> (1)
<property name="configuration"> (2)
<bean class="org.apache.camel.component.infinispan.embedded.InfinispanEmbeddedConfiguration">
<property name="configurationUrl" value="classpath:infinispan.xml"/>
</bean>
</property>
</bean>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start" />
<aggregate aggregationStrategy="myStrategy"
completionSize="3"
aggregationRepository="infinispanRepo"> (3)
<correlationExpression>
<header>MessageID</header>
</correlationExpression>
<to uri="mock:result"/>
</aggregate>
</route>
</camelContext>
- 设置存储库将使用的缓存名称
- 配置存储库 bean
- 将存储库设置为路由
注意
随着 Infinispan 11 的发布,需要对创建的任何缓存设置编码配置。这对消耗事件也很重要。如需更多信息,请参阅官方 Infinispan 文档中的 Data Encoding 和 MediaTypes。