As suspected in Finn Bear's comment, the writeNext method was actually blocking for minutes and then writing hundreds of thousands of messages in a second.
Extracting the message sending into a separate Goroutine and atomically incrementing the messagesSinceLastReport variable solved the issue for me.