Как запечатлеть события на Кассандре? - PullRequest
0 голосов
/ 10 мая 2019

У нас есть приложение, скажем Application A, которое выдвигает список задач на Application B и одновременно делает запись в Кассандре.Схема Кассандры выглядит следующим образом: -

class Task{

     @PrimaryKeyColumn(type=Partitioned)
     String batchId;

     @PrimaryKeyColumn(type=Clustered)
     String taskId;

     Boolean success;

     String operation;

     String error;
}

Теперь Application B начинает обрабатывать каждую из этих задач и продолжает обновлять Application A.Только после того, как все задачи в одном пакете достигают состояния успеха / сбоя.Нам нужно обновить Application C

Изначально мы думали о том, чтобы сохранить все данные в памяти и обновить статус, как только мы получим ответ, но это было слишком тяжело для кучи, а также, если служба выйдетсписок задач также теряется.

Если в Cassandra может быть способ перехватить поток событий или Cassandra уведомляет приложение каждый раз, когда происходит обновление какой-либо из этих записей, то мы можем использовать CountdownLatch и в тот момент, когда обратный отсчет завершается, мы можем вызвать уведомление на Application C.

...