【问题标题】:Beans for multiple Cassandra Clusters with RESTful Spring MVC带有 RESTful Spring MVC 的多个 Cassandra 集群的 Bean
【发布时间】:2017-05-24 21:36:34
【问题描述】:

我们如何使用 Bean 连接到多个 Cassandra 集群,以及如何配置控制器以使用特定集群进行操作?我们是否保持这些联系有效?

我有这个 CassandraOperations 代码:

@Configuration
@PropertySource(value = { "classpath:META-INF/cassandra.properties" })
@EnableCassandraRepositories(basePackages = { "com.rg" })
public class CassandraConfig {

    @Autowired
    private Environment environment;

    private static final Logger LOGGER = LoggerFactory.getLogger(CassandraConfig.class);

    @Bean
    public CassandraClusterFactoryBean cluster() {

        CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
        cluster.setContactPoints(environment.getProperty("cassandra.contactpoints"));
        cluster.setPort(Integer.parseInt(environment.getProperty("cassandra.port")));
        return cluster;
    }

    @Bean
    public CassandraMappingContext mappingContext() {
        return new BasicCassandraMappingContext();
    }

    @Bean
    public CassandraConverter converter() {
        return new MappingCassandraConverter(mappingContext());
    }

    @Bean
    public CassandraSessionFactoryBean session() throws Exception {

        CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
        session.setCluster(cluster().getObject());
        session.setKeyspaceName(environment.getProperty("cassandra.keyspace"));
        session.setConverter(converter());
        session.setSchemaAction(SchemaAction.NONE);
        return session;
    }

    @Bean
    public CassandraOperations cassandraTemplate() throws Exception {
        return new CassandraTemplate(session().getObject());
    }

}

【问题讨论】:

    标签: java spring spring-mvc spring-data-cassandra


    【解决方案1】:

    目前,您唯一的选择是配置使用多个Sessions 的多个CassandraTemplate 实例。 Cassandra Session(和 Cluster)和 CassandraTemplate 具有很强的 1:1 关系。

    这将改变 Spring Data Cassandra 2.0,因为我们将添加一个SessionFactory 接口,它的实现是可插入的,因此您可以定义自己的路由。此外,我们将添加一个类似于AbstractRoutingDataSourceAbstractRoutingSessionFactory。请参阅https://jira.spring.io/browse/DATACASS-330 了解更多详情,并在其中留下您的想法。

    【讨论】:

    • 以下场景有哪些选项:我在 1 个集群中有 2 个键空间,在另一个集群中有 1 个键空间。我应该: 1.) 创建两个 Bean,为我提供到每个集群的所需连接,以及三个不同的模板 Bean,它们使用不同的会话连接到其集群中的相应键空间。 2.)创建三个不同的bean栈(集群连接,会话bean)
    • 3. bean 堆栈与 CassandraTemplate。根据您是否使用 Cassandra 存储库,您还应该创建三个单独的存储库接口,这些接口使用不同的 @EnableCassandraRepositories(cassandraTemplateRef=…) 注释配置以及相应的模板参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 2017-11-01
    • 2019-09-28
    • 2017-03-02
    • 2011-06-14
    相关资源
    最近更新 更多