Based on reading the ZMQ book (thanks vijay) I changed the device socket type from dealer to REQ. Doing this enables us to change the message flow in the device to support a reliable model, where we can check timeout on listening for a server reply and retry the request if needed, basically making sure that yes, our message did get through successfully. Next step in reliablility is moving the servers state into the database, which will enable it to bounce back better if it goes down.