What's the correct algorithm to filter accumulating string concatenations?
Store them in a heap or priority queue, keyed on the size of the message.  This way, if you want the $k$ largest messages, you can keep track of that as each message arrives.  This will require $O(k)$ space to keep track of the $k$ largest messages at each step, and $O(\log k)$ time per message that arrives, so it should be pretty efficient.