我很难从一个Sping Boot 应用程序连接到两个不同的集群。任务是从ec2上的Cassandra获取数据,并批量插入到AWS密钥空间。我可以从ec2上的Cassandra获取数据。
在这里,我将重写
集群构建器定制器
当尝试连接到运行在ec2上的Cassandra集群时,一切正常,但要求还有一个集群从Cassandra ec2中选择数据并插入到另一个Cassandra集群中。
问题是,当我覆盖在AWS Keyspace中创建集群的自定义方法时,接触点被添加到以前创建的集群中,而不是创建新集群。
之后,我尝试创建两个不同的配置来示例化两个不同的集群。唯一不同是它是为第三方云 cassandra 。
@Configuration
@EnableCassandraRepositories(cassandraTemplateRef = "cassandraKeyspaceServiceTemplate")
public class CassandraClusterOneServiceConfiguration {
@Autowired
private CassandraOneProperties cassandraProperties;
@Bean(name = "cluster1")
@Primary
public CassandraClusterFactoryBean cluster() {
CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
cluster.setContactPoints(cassandraProperties.getContactPoints());
cluster.setPort(cassandraProperties.getPort());
cluster.setSslEnabled(cassandraProperties.isSsl());
cluster.setUsername(cassandraProperties.getUsername());
cluster.setPassword(cassandraProperties.getPassword());
final SSLContext sslContext = SSLContext.getInstance("SSL");
cluster.setSslOptions(
RemoteEndpointAwareJdkSSLOptions.builder().withSSLContext(sslContext).build());
cluster.setJmxReportingEnabled(false);
return cluster;
}
@Bean(name = "clusterContext1")
@Primary
public CassandraMappingContext mappingContext() {
return new CassandraMappingContext();
}
@Bean(name = "clusterConverter1")
@Primary
public CassandraConverter converter() {
return new MappingCassandraConverter(mappingContext());
}
@Bean("cassandraKeyspaceServiceSession")
@Primary
public CassandraSessionFactoryBean session() {
CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
session.setCluster(cluster().getObject());
session.setKeyspaceName(cassandraProperties.getKeyspaceName());
session.setConverter(converter());
session.setSchemaAction(SchemaAction.NONE);
return session;
}
@Bean("cassandraKeyspaceServiceTemplate")
@Primary
public CassandraOperations cassandraTemplate() {
return new CassandraTemplate(session().getObject());
}
}
在这段代码中,第一个集群也设置正确,但是第二个集群给我一个NoHostAvailable
异常,这似乎是一个连接超时。
如何在Sping Boot 应用程序中创建两个不同的群集?
1条答案
按热度按时间ljsrvy3e1#
您需要创建两个类,如示例Managing Multiple Cassandra Sessions所示。
此外,您还可以在此处找到Amazon Keyspaces和Sping Boot 的一些最佳实践。https://github.com/aws-samples/amazon-keyspaces-examples/tree/main/java/datastax-v4/spring