I think you would be better served by using a streaming system like Apache Flink (http://flink.apache.org) and checkpointing occasionally to Cassandra.
This is a significant increase in complexity, but you are describing a real-time streaming use case with the need for watermarking time windows and Flink has that all built in.