Ich benutze Cassandra Driver 3.0. Wenn ich Daten asynchron lese, bekomme ich die Daten konsistent.Datastax Cassandra Java-Treiber, zukünftige Ergebnismenge scheint in konsistenten Daten zurückzukehren
Zum Beispiel: In der angegebenen Liste von Mitarbeiter-IDs, [ID1, ID2], fordere ich die Daten für ID1 und ID2. Ich bekomme Daten für ID1 und ID2 und manchmal ID1 und ID1. Dies ist inkonsistent. Ich habe den folgenden Code zur Verfügung gestellt. Können Sie bitte helfen?
public List<Employee> getEmployeeShortProfile(List<String> employeeIds) throws InterruptedException,
ExecutionException {
List<ResultSetFuture> rsFutureList = new ArrayList<ResultSetFuture>();
List<Employee> EmployeeList = new ArrayList<Employee>();
for (String EmployeeId : EmployeeIds) {
//Please NOTE
//preparedStatement.getbStGetShortProfileById() below in the code returns the following prepared statement
//client.getSession().prepare(
//"select employee_id, company_name, company_icon_url, product_icon_image, company_display_name, employee_information, detail_description from samplekeysapce.tbl_master_employees where employee_id = ? limit 15");
// FYI, I did not set the consistency level in the execute.
BoundStatement bStGetShortProfileById = preparedStatement.getbStGetShortProfileById();
logger.debug("... setting the short profile id ..."+EmployeeId);
bStGetShortProfileById.bind(EmployeeId);
Session session = client.getSession();
ResultSetFuture rs = session.executeAsync(bStGetShortProfileById);
rsFutureList.add(rs);
}
for(ResultSetFuture rsF : rsFutureList){
ResultSet rs = rsF.getUninterruptibly();
Iterator<Row> rowIterator = rs.iterator();
Employee c = extractEmployee(rowIterator);
if(c!= null){
EmployeeList.add(c);
}
}
return EmployeeList;
}
assoziierte Jira-Ticket für Querverweise: https://datastax-oss.atlassian.net/browse/JAVA-1198 –
Vielen Dank Sotirios Delimanolis – fsheriff