用于多个 Cassandra 集群的 bean with RESTful Spring MVC



如何使用 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());
    }
}

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

这将改变Spring Data Cassandra 2.0,因为我们将添加一个SessionFactory接口,该接口在其实现方面是可插拔的,因此您可以定义自己的路由。此外,我们将添加一个类似于 AbstractRoutingDataSourceAbstractRoutingSessionFactory .有关更多详细信息,请参阅 https://jira.spring.io/browse/DATACASS-330,并在那里留下您的想法。

相关内容

最新更新