Yeah, it's shitty. I know. The logic works well for the RollupBatchWriter, but the abstraction doesn't fit well when there are multiple Queues involved. 

I don't think it will necessarily be true that a triggering key will be the key for the largest queue. Exceptions to that rule will be really rare though, so it probably makes more sense to just drain for the triggering key.

I'm going to leave dealing with this for later. Having a 'drainBatch()' without arguments will probably help if we keep read batching and abstract out the common methods between RollupBatchReader and Writer in the future.