管理多个 Cassandra 会话

Posted

技术标签:

【中文标题】管理多个 Cassandra 会话【英文标题】:Managing Multiple Cassandra Sessions 【发布时间】:2016-03-23 07:44:07 【问题描述】:

我有多个 Cassandra 集群。每个集群都有一组特定的接触点。每个集群都有一组单独的表/CF。

在我的 C* 客户端中,我应该查询两个集群。我正在使用 Cassandra 的 spring-boot 版本。我正在尝试使用 CassandraOperations 进行查询。我该怎么做?

@Bean
public CassandraOperations cassandraTemplate(Session sessionA) throws Exception 
     return new CassandraTemplate(sessionA);


@Bean
public CassandraMappingContext mappingContext() 
    return new BasicCassandraMappingContext();


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

以上是我使用 sessionA 设置 cassandra 操作的示例,如何为 sessionB 做同样的事情?

在任何给定的时间基础上,查询都可以转到 sessionA 或 sessionB。

欢迎指点

谢谢

【问题讨论】:

【参考方案1】:

通过为每个集群管理器创建单独的类找到了一种方法。

@Component
@Primary
public class CassandraTemplateA extends CassandraTemplate

    @Autowired
    public CassandraTemplateA(CassandraConverter converter) 
        super(sessionA, converter);
    


@Component
@Primary
public class CassandraTemplateB extends CassandraTemplate

    @Autowired
    public CassandraTemplateB(CassandraConverter converter) 
        super(sessionB, converter);
    

【讨论】:

您能否分享一下这两个模板是如何被使用的,或者在幕后它们是如何被 Spring 自动使用的,而 Spring 负责处理具有两个不同键空间的两个会话?我面临一个问题,我需要连接到两个不同的键空间。

以上是关于管理多个 Cassandra 会话的主要内容,如果未能解决你的问题,请参考以下文章

cassandra安装

Cassandra 2.2.1 不会开始使用 cassandra -f

Cassandra 数据库安装部署

Cassandra 边界框搜索

无法启动 Cassandra:端口已在使用中

禁用 Spring Boot 启动器 Cassandra 进行单元测试