I'm a big fan of NATS. It a small binary which can be scaled as much as you want and it replaces Kalfka, lightweight MQTT brokers, etc and has clients for most languages.
Is it suitable for embedded applications? (very low resources, intermittent network availability, etc)