Currently I'm using DDS, specifically from eprosma. I would avoid that implementation unless you're using java.
I really like NATS. However I would probably use what every is bundled with the cloud system I'm using, unless its super critical.
MQTT is quite nice for things, as is rabbit.