简体   繁体   English

带有RESTful Spring MVC的多个Cassandra集群的Bean

[英]Beans for multiple Cassandra Clusters with RESTful Spring MVC

How do we connect to multiple Cassandra Clusters using Beans and how do we configure the Controller to use a specific cluster for an operation ? 我们如何使用Bean连接到多个Cassandra集群,以及如何配置Controller以将特定集群用于操作? Do we keep these connections live ? 我们是否保持这些连接有效?

I have this CassandraOperations code: 我有这个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());
    }

}

Currently, your only option is configuring multiple CassandraTemplate instances that use multiple Session s. 当前,您唯一的选择是配置使用多个Session的多个CassandraTemplate实例。 A Cassandra Session (and Cluster ) and a CassandraTemplate have a strong 1:1 relation. Cassandra Session (和Cluster )和CassandraTemplate具有很强的1:1关系。

This will change will Spring Data Cassandra 2.0 as we're going to add a SessionFactory interface that is pluggable regarding its implementation so you can define own routing. 这将改变Spring Data Cassandra 2.0,因为我们将添加一个SessionFactory接口,该接口的实现可插入,因此您可以定义自己的路由。 Additionally, we will add an AbstractRoutingSessionFactory that is similar to AbstractRoutingDataSource . 此外,我们将增加一个AbstractRoutingSessionFactory类似于AbstractRoutingDataSource See https://jira.spring.io/browse/DATACASS-330 for further details and leave your thoughts in there. 有关更多详细信息,请参见https://jira.spring.io/browse/DATACASS-330 ,并将您的想法保留在那里。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM