I wanted to mention MQTT (mqtt.org) as good lightweight protocol that has many implementations.
I was surprised author made no mention of it (mqtt.org) but come to think of it it might be because author is specifically looking for queues it seems and MQTT works better as a PubSub, and its durability story which seems the main focus of the author is way different with very cool features - QoS - for delivery reliability but still not a classic queue
My strategy was to start out by implementing the underlying storage primitives first, and then look into which transport to implement later. The transport of course can have a large impact on the required storage primitives, but in my case I built it the other way around since I knew what primitives I would need in my applications.
I've been playing with the thought of implementing (parts of) the Kafka API, but I honestly haven't considered the transport that much yet :)
Reading, 'ensuring that data is actually written and stays written is rather difficult', immediately reminded me of https://github.com/microsoft/FASTER (its not written in Go though), which is basically dealing with just that outlet ( except I think the KV store might be ram heavy, been a bit since I last looked at it )
I was surprised author made no mention of it (mqtt.org) but come to think of it it might be because author is specifically looking for queues it seems and MQTT works better as a PubSub, and its durability story which seems the main focus of the author is way different with very cool features - QoS - for delivery reliability but still not a classic queue