I would rather use sockets. Not getting errors when a client times out is a bad api design to me. I've used zeromq an only kept it around for IPC. I may have been doing it wrong, but i personally want to know when clients disconnect/reconnect/etc. the API seems to hide all that from you and your send or recv just block.
Pretty much this. I always found it crazy how zmq gained any traction at all. "Oh, I have a req/resp workload" - one of the sides restarts, goes out of rhythm with the state of the connection (whether its req or resp), unrecoverable errors. Every system I've seen use zmq usually use it without these fancy patterns (use yeet messages in any order), and usually have some sort of "Is anybody there on the other side?" me…
Funny, I always used ZeroMQ as a message-oriented TCP-like protocol that reconnects automatically.
> It's great if you are completely incapable/incompetent of solving the problem properly.
Oof. I think it's great if you don't want to mess with low-level socket details and just want to write a actor-like messaging protocol.