Java 使用RESTful Spring MVC实现多个Cassandra集群的bean

Java 使用RESTful Spring MVC实现多个Cassandra集群的bean,java,spring,spring-mvc,spring-data-cassandra,Java,Spring,Spring Mvc,Spring Data Cassandra,我们如何使用bean连接到多个Cassandra集群,以及如何配置控制器以使用特定集群进行操作?我们能保持这些联系吗 我有一个Cassandra操作代码: @Configuration @PropertySource(value = { "classpath:META-INF/cassandra.properties" }) @EnableCassandraRepositories(basePackages = { "com.rg" }) public class CassandraConfig

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

我有一个Cassandra操作代码:

@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());
    }

}

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


这将改变Spring数据Cassandra 2.0,因为我们将添加一个可插拔的
SessionFactory
接口,以便您可以定义自己的路由。此外,我们将添加一个类似于的
AbstractRoutingSessionFactory
。请参阅以了解更多详细信息,并将您的想法留在这里。

以下场景有哪些选项:我在一个集群中有2个键空间,在另一个集群中有1个键空间。我应该:1.)创建两个bean,为我提供到每个集群所需的连接,以及三个不同的模板bean,它们使用不同的会话连接到集群中的各个键空间。2.)创建三个不同的bean堆栈(集群连接、会话bean)3。带有CassandRateTemplate的bean堆栈。根据您是否使用Cassandra存储库,您还应该创建三个单独的存储库接口,这些接口使用不同的
@EnableCassandraRepositories(cassandraTemplateRef=…)
注释配置和相应的模板引用进行选择。