Question

I'm wondering if is possible set multiple ipc publishers for one subscriber using zmq ipc...

Abstractly I have only one publisher like this, but I need run multiple instances of it getting several data types but publishing the same format every time.

    context = zmq.Context()
    publisher = context.socket(zmq.PUB)
    publisher.connect("ipc://VCserver")
    myjson = json.dumps(worker.data)
    publisher.send(myjson)

My subscriber:

    context = zmq.Context()
    subscriber = context.socket(zmq.SUB)
    subscriber.bind("ipc://VCserver")
    subscriber.setsockopt(zmq.SUBSCRIBE, '')
    while True:
        response = subscriber.recv()
        if response:
            data = json.loads(response)
            check_and_store(data)

My subscriber every time is checking the same parameters from the data and storing it on a db.

I do not know if it is possible, as this mode of communication uses a shared file and maybe I should think in publisher-subscriber pairs for every instance...

EDITED:Every publisher will send 2kb aprox, 100 times/sec

Was it helpful?

Solution

You can definitely have multiple publishers, the only restriction is that you cannot have multiple binders on one IPC socket - each successive bind simply clobbers previous ones (as opposed to TCP, where you will get EADDRINUSE if you try to bind to an already-in-use interface). Your case should work fine.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top