A framework for processing data on SNS+SQS and/or Kinesis streams.

 See the README.md file in qs-core/src/main/java/com/blacklocus/qs/drivers/ for an overview and examples.
The existing QueueReader's usage of an ExecutorService is really important as it lets us shape exactly what kind of parallelism the machine can and should support: e.g. high cpu per message (fewer threads), or high blocking per message (many threads), variable or self-optimizing load (ExecutorService implementations).

This is related to a concern I have with Kinesis which imposes a number of strong assumptions on the shape of your parallelization (kinesis shards are 1-1 with recordprocessor threads across all machines).