Вы должны использовать отдельный канал для отслеживания запрашивающей стороны, поскольку сокеты zmq не могут этого знать.
Вы можете использовать сокеты запроса / ответа в обратном порядке для этой цели, но у вас могут возникнуть проблемы с производительностью, потому что по сути вы будете делать другой запрос / ответ, прежде чем ответить.
Entity1 Entity2
Request -------------- Reply
Reply -------------- Request
и поток связи будет
Entity1 --------> request -----> Entity2
Entity1 <------- request <----- Entity2
Entity1 -------- reply ------> Entity2
Entity1 <------- reply ------- Entity2
Это в настоящее время гарантирует, что Entity1 не будет доступен для получения ответа, но повышает его вероятность.
Тем не менее, может быть плохой идеей запрашивать состояние запрашивающего, чтобы быть известным ответчику.