我需要从我的应用程序连接到两个不同的Cassandra集群。你有一个例子,我可以在Spring WebFlux中做到这一点吗?我试着在网上寻找例子,但我找不到一个足够清晰的例子。
oug3syen1#
您需要使用@Bean注解定义两个Cassandra会话,每个会话都有自己的一组接触点和CQL客户端端口。下面的示例显示了使用@Value注解创建的变量,用于从application.properties文件中检索配置参数。
@Bean
@Value
application.properties
@Configuration public class CassandraConfiguration { @Value("${cassandra1.contactPoints}") private String cassandra1ContactPoints; @Value("${cassandra2.contactPoints}") private String cassandra2ContactPoints; @Value("${cassandra1.port}") private int cassandra1Port; @Value("${cassandra2.port}") private int cassandra2Port; @Value("${cassandra1.keyspace}") private String cassandra1Keyspace; @Value("${cassandra2.keyspace}") private String cassandra2Keyspace; @Bean("cassandra1Session") public CqlSession cassandra1Session() { CqlSession session = Cluster.builder() .addContactPoints(cassandra1ContactPoints.split(",")) .withPort(cassandra1Port) .build(); return session.connect(cassandra1Keyspace); } @Bean("cassandra2Session") public CqlSession cassandra2Session() { CqlSession session = Cluster.builder() .addContactPoints(cassandra2ContactPoints.split(",")) .withPort(cassandra2Port) .build(); return session.connect(cassandra2Keyspace); } }
然后可以在WebFlux控制器中使用这些会话cassandra1Session和cassandra1Session。例如:
cassandra1Session
@RestController public class MyController { @Autowired @Qualifier("cassandra1Session") private CqlSession cassandra1Session; @Autowired @Qualifier("cassandra2Session") private CqlSession cassandra2Session; @GetMapping("/cassandra1Data") public Flux<Row> getCassandra1Data() { String query = "SELECT * FROM mytable"; return cassandra1Session.executeReactive(query).flux(); } @GetMapping("/cassandra2Data") public Flux<Row> getCassandra2Data() { String query = "SELECT * FROM mytable"; return cassandra2Session.executeReactive(query).flux(); } }
请注意,@Autowired注解用于将Cassandra会话注入控制器,@Qualifier注解用于指定要注入的会话。干杯!
@Autowired
@Qualifier
1条答案
按热度按时间oug3syen1#
您需要使用
@Bean
注解定义两个Cassandra会话,每个会话都有自己的一组接触点和CQL客户端端口。下面的示例显示了使用@Value
注解创建的变量,用于从application.properties
文件中检索配置参数。然后可以在WebFlux控制器中使用这些会话
cassandra1Session
和cassandra1Session
。例如:请注意,
@Autowired
注解用于将Cassandra会话注入控制器,@Qualifier
注解用于指定要注入的会话。干杯!