[英]Beans for multiple Cassandra Clusters with RESTful Spring MVC
我们如何使用Bean连接到多个Cassandra集群,以及如何配置Controller以将特定集群用于操作? 我们是否保持这些连接有效?
我有这个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());
}
}
当前,您唯一的选择是配置使用多个Session
的多个CassandraTemplate
实例。 Cassandra Session
(和Cluster
)和CassandraTemplate
具有很强的1:1关系。
这将改变Spring Data Cassandra 2.0,因为我们将添加一个SessionFactory
接口,该接口的实现可插入,因此您可以定义自己的路由。 此外,我们将增加一个AbstractRoutingSessionFactory
类似于AbstractRoutingDataSource
。 有关更多详细信息,请参见https://jira.spring.io/browse/DATACASS-330 ,并将您的想法保留在那里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.