Вам нужно более одного производителя? Если нет, вы можете использовать PUSH / PULL вместо PUB / SUB.
С PUSH / PULL вы можете иметь столько потребителей, сколько вы хотите (они являются стороной PULL модели). Все сообщения, записанные в конечную точку PUSH, распределяются в круговом стиле среди всех подключенных потребителей. Это также гарантирует, что два потребителя не получат одно и то же сообщение.
Как вы описали, имея потребителей в качестве конечной точки SUB, вы можете в конечном итоге доставлять одно и то же сообщение более чем одному потребителю (при условии, что это будет проблемой в вашей модели), если два или более потребителей подписаны на один и тот же "префикс" .
Предполагается, что "префикс" - это строка, которую вы передаете sock.setsockopt(ZMQ_SUBSCRIBE, "prefix", ...);