如何在Spring Cloud数据流中将gemfire配置为聚合模块的消息存储

时间:2019-02-11 10:54:43

标签: spring-cloud-dataflow

2 个答案:

答案 0 :(得分:1)

GemfireMessageStore的配置如下:

@ConditionalOnClass(GemfireMessageStore.class)
@ConditionalOnProperty(prefix = AggregatorProperties.PREFIX,
        name = "message-store-type",
        havingValue = AggregatorProperties.MessageStoreType.GEMFIRE)
@Import(ClientCacheAutoConfiguration.class)
static class Gemfire {

    @Bean
    @ConditionalOnMissingBean
    public ClientRegionFactoryBean<?, ?> gemfireRegion(GemFireCache cache, AggregatorProperties properties) {
        ClientRegionFactoryBean<?, ?> clientRegionFactoryBean = new ClientRegionFactoryBean<>();
        clientRegionFactoryBean.setCache(cache);
        clientRegionFactoryBean.setName(properties.getMessageStoreEntity());
        return clientRegionFactoryBean;
    }

    @Bean
    public MessageGroupStore messageStore(Region<Object, Object> region) {
        return new GemfireMessageStore(region);
    }

}

重点是,您始终可以使用自己的名称覆盖ClientRegionFactoryBean。 或者,您可以考虑到ClientCacheAutoConfiguration是基于@ClientCacheApplication的,而这反过来又允许您拥有一个ClientCacheConfigurer bean,并提供了足以用于客户端缓存配置的任何内容。包括配置和池。没错:它不在应用程序启动程序的配置级别上,您必须纠正一些自定义代码,将它们作为依赖项包含在目标特定于绑定程序的最终uber jar中。

有关如何构建它们的更多信息,请参见文档:https://docs.spring.io/spring-cloud-stream-app-starters/docs/Einstein.RC1/reference/htmlsingle/#_patching_pre_built_applications

答案 1 :(得分:0)

Spring Integration提供了多种后端存储选项。您可以在spring-cloud-starter-stream-processor-aggregator/README中了解更多信息。

有关此问题的Spring Integration文档包含在链接中,Gemfire section可能很有用。

回顾MessageGroupStore implementation也很有用,因为它是aggregator中存储选项的基础。