首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring Boot 2 Cassandra多个键盘空间或集群

Spring Boot 2 Cassandra多个键盘空间或集群
EN

Stack Overflow用户
提问于 2018-09-01 06:29:14
回答 1查看 2.4K关注 0票数 1

我正在开发Spring Boot版本的2.0.3.RELEASEspring-data-cassandra-2.0.8。我必须连接到两个不同的Cassandra集群。Spring Boot的CassandraAutoConfiguration似乎只支持1个Cassandra集群。

如何使用spring-data-cassandra自动创建的@Repository实现

EN

回答 1

Stack Overflow用户

发布于 2018-09-01 15:35:08

您可以有多个Cassandra集群配置。

代码语言:javascript
运行
复制
/**
 * Configuration class for keyspace: big_data (Cluster 1)
 *
 */
@Configuration
@EnableCassandraRepositories(basePackages = "com.bigdata.cassandra.repository.data",
    cassandraTemplateRef = "keyspaceBigDataServiceTemplate")
public class CassandraBigDataServiceConfiguration {

  @Autowired
  private Properties cassandraProperties;

  @Bean
  public CassandraClusterFactoryBean cluster() {

    CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
    cluster.setContactPoints(cassandraProperties.getCassandraBigDataContactPoint());
    cluster.setPort(cassandraProperties.getCassandraBigDataPort());
    cluster.setSslEnabled(cassandraProperties.isCassandraBigDataSslEnabled());
    return cluster;
  }

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

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

  @Bean("keyspaceBigDataServiceSession")
  public CassandraSessionFactoryBean session() {

    CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
    session.setCluster(cluster().getObject());
    session.setKeyspaceName(cassandraProperties.getCassandraBigDataKeyspaceReporting());
    session.setConverter(converter());
    session.setSchemaAction(SchemaAction.NONE);

    return session;
  }

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

}

另一个具有不同键空间的集群: reporting

代码语言:javascript
运行
复制
/**
 * Configuration class for keyspace: reporting (Cluster 2)
 *
 */
@Configuration
@EnableCassandraRepositories(basePackages = "com.bigdata.cassandra.repository.reports",
    cassandraTemplateRef = "keyspaceReportingServiceTemplate")
public class CassandraReportingServiceConfiguration {

  @Autowired
  private Properties cassandraProperties;

  @Bean
  public CassandraClusterFactoryBean cluster() {

    CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
    cluster.setContactPoints(cassandraProperties.getCassandraReportingContactPoint());
    cluster.setPort(cassandraProperties.getCassandraReportingPort());
    cluster.setSslEnabled(cassandraProperties.isCassandraReportingSslEnabled());
    return cluster;
  }

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

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

  @Bean("keyspaceReportingServiceSession")
  public CassandraSessionFactoryBean session() {

    CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
    session.setCluster(cluster().getObject());
    session.setKeyspaceName(cassandraProperties.getCassandraReportingKeyspaceReporting());
    session.setConverter(converter());
    session.setSchemaAction(SchemaAction.NONE);

    return session;
  }

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

}

您必须为希望连接到的每个集群指定属性:

代码语言:javascript
运行
复制
# big_data keyspaces are in Cluster 1
cassandra-cluster1.contact-points=1.set.cluster1.ip
cassandra-cluster1.port=9042
cassandra-cluster1.keyspace-reporting.name=big_data
cassandra-cluster1.ssl.enabled=true

# reporting keyspace are in Cluster 2
cassandra-cluster2.contact-points=2.set.cluster2.ip
cassandra-cluster2.port=9042
cassandra-cluster2.keyspace-2.name=keyspace_2 // can have multiple keyspaces of course 
cassandra-cluster2.keyspace-reporting.name=reporting
cassandra-cluster2.ssl.enabled=true
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52123266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档