2017-01-10 22 views
0

Beansを使用して複数のCassandra Clustersに接続するにはどうすればいいでしょうか。これらの接続を生き生きとしていますか?Rustful Spring MVCを使用した複数のCassandraクラスタ用Beans

私はこの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()); 
    } 

} 

答えて

0

は現在、あなたの唯一のオプションは、複数のSession Sを使用する複数のCassandraTemplateのインスタンスを構成しています。カッサンドラSession(およびCluster)およびCassandraTemplateは、強い1:1の関係を有する。

これはSpring Data Cassandra 2.0に変わります。具体的には、実装に関してプラッガブルなSessionFactoryインターフェイスを追加して、独自のルーティングを定義できます。さらに、AbstractRoutingDataSourceに似ているAbstractRoutingSessionFactoryを追加します。詳細についてはhttps://jira.spring.io/browse/DATACASS-330を参照し、そこにあなたの考えを残してください。

+0

次のシナリオのオプションは何ですか? 1つのクラスタに2つのキースペースがあり、別のクラスタに1つのキースペースがあります。 すべきこと: 1.)各クラスタと、クラスタ内のそれぞれのキースペースに接続するために異なるセッションを使用する3つの異なるテンプレートBeanに必要な接続を与える2つのBeanを作成します。 2.)3つの異なるBeanスタック(クラスタ接続、セッションBean)を作成します。 – arshellium

+0

3. CassandraTemplateを使用してBeanスタックを作成します。 Cassandraリポジトリを使用するかどうかに応じて、別の '@EnableCassandraRepositories(cassandraTemplateRef = ...)'アノテーションのコンフィグレーションに応じて別々のリポジトリインタフェースを3つ作成してテンプレートリファレンスを作成する必要があります。 – mp911de

関連する問題