Да, использование асинхронных запросов является стандартным шаблоном. Вам нужно только позаботиться о том, чтобы не перегружать вашу систему - у драйвера есть ограничение на количество запросов в полете на соединение / хост, и по умолчанию оно составляет 1024. Вам необходимо увеличить максимальное количество запросов в полете на соединение до некоторого разумного значения (максимум 32 КБ).
Это может быть сделано при настройке объекта Cluster
или во время выполнения:
PoolingOptions poolingOptions = new PoolingOptions();
poolingOptions.setMaxRequestsPerConnection(HostDistance.LOCAL, 32768);
Cluster cluster = Cluster.builder().withContactPoints("...")
.withPoolingOptions(poolingOptions).build();
Подробнее см. документация для водителя .
Если у вас гораздо больше данных, вам может понадобиться использовать какой-то семафор и т. Д., Чтобы предотвратить отправку слишком большого количества запросов. Вы можете увидеть один из примеров здесь .