The problem with these systems is that batching would make the implementation more complex. Sending say 10m notifications per second in a fire-and-forget manner is easily distributable en requires little state. Batching per user would be do-able but requires thinking about distribution (messages to the same user should at some point go over the same machine) and tracking a bit of in-memory state per user.<p>In short I can imagine the trade-off of less-optimal support for some edge cases like these.