NATS is a fast TCP-based message broker where you can publish messages to multiple subscribers based on a topic hierarchy. The cool thing about it is that it can be embedded into Go applications, not just the client API but also the server. So it can be (ab-)used as a local IPC solution, although this is admittedly overkill. I discuss the differences between plain NATS and Jetstream in Go and how pull messages from persistent Jetstream streams. I also discuss the latest Jepsen.io report on NATS, which shows some substantial weaknesses of the Jetstream persistent layer.
https://nats.io
https://jepsen.io/analyses/nats-2.12.1
https://natsbyexample.com/