![](/img/trans.png)
[英]How to set consistency level on a query basis in Java Spring Data Cassandra Reactive Library
[英]How to set consistency level on per-query basis in Java Spring Data Cassandra Reactive Library
我在 Java 中使用 Spring 數據 Cassandra 反應庫並使用 ReactiveCqlTemplate 查詢 ScyllaDB。
在應用程序級別,我們可以通過在 application.properties 文件中指定如下屬性來設置
spring.data.cassandra.consistency-level=quorum
我的問題是如何使用 ReactiveCqlTemplate 在每個查詢級別上指定一致性級別? 我正在使用 ReactiveCqlTemplate 來查詢我的 Scylla DB。 代碼示例如下:
@Autowired
private ReactiveCqlTemplate template;
@Override
public Mono<Template> findTemplate(Channel channel, String id) {
String query = "select * from task where id = ? and channel = ?";
return template.queryForObject(query, new RowMapper<Template>() {
public Template mapRow(Row row, int rowNum) {
Template template = new Template();
template.setContent(row.getString("content"));
template.setMessageType(row.getString("message_type"));
template.setSource(row.getString("source"));
template.setSubject(row.getString("subject"));
template.setTemplateKey(new TemplateKey(row.getString("id"), Channel.fromString(row.getString(("channel")))));
return template;
}}, UUID.fromString(id), channel.toString());
}
在使用上面的模板變量時可以選擇設置 ConsistencyLevel,但這將適用於整個 object。 我想指定我向 Scylla DB 拍攝的每個查詢。
看一下:
ReactiveCqlTemplate.setConsistencyLevel(:ConsistencyLevel)
和...
ReactiveCqlTemplate.setSerialConsistencyLevel(:ConsistencyLevel)
注意:這將適用於使用此模板執行的所有語句。
如果您需要對每個語句進行更細粒度的控制,那么我建議:
ReactiveCqlTemplate.execute(:ReactivePreparedStatementCreator)
或者...
ReactiveCqlTemplate.execute(:ReactivePreparedStatementCreator, ReactivePreparedStatementCallback<T>)
創建者允許您創建您喜歡的Statement
。 並且,回調使您可以訪問 DataStax Statement
API,您可以在其中根據需要配置其他設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.