How to send and receive messages to/via multiple streams?

Okay. You mean an additional goroutine for publishing within (!) the other two goroutines I mentioned before?
Currently I use mutex to avoid data races while publishing the messages:

mutex.Lock()
Subsription.Publish(topic, msg)
mutex.Unlock()