basic benchmark for pub sub

21 views
Skip to first unread message

Edi V

unread,
May 23, 2017, 7:11:55 PM5/23/17
to zeromq
Hi,

I have presently setup a PUB/SUB using zeromq with 1 forwarder device.

1] I have 1 forwarder on "host2"-

import zmq

def main():

    try:
        context = zmq.Context(1)
        # Socket facing clients
        frontend = context.socket(zmq.SUB)
        frontend.bind("tcp://*:5559")

        frontend.setsockopt_string(zmq.SUBSCRIBE, "")

        # Socket facing services
        backend = context.socket(zmq.PUB)
        backend.bind("tcp://*:5560")

        zmq.device(zmq.FORWARDER, frontend, backend)
    except Exception as e:
        print(e)
        print("bringing down zmq device")
    finally:
        pass
        frontend.close()
        backend.close()
        context.term()

if __name__ == "__main__":
    main()


2] 1 producer on "host1" -

import zmq
import random
import sys
import time

port = "5559"
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.connect("tcp://host2:%s" % port)
publisher_id = 0
while True:
    topic = 100
    messagedata = "server#%s" % publisher_id
    publisher_id = publisher_id + 1
    print("%s %s" % (topic, messagedata))
    socket.send_string("%d %s" % (topic, messagedata))
    time.sleep(1)


1 consumer on "host3" -
import sys
import zmq

port = "5560"
# Socket to talk to server
context = zmq.Context()
socket = context.socket(zmq.SUB)
print("Collecting updates from server...")
socket.connect ("tcp://host1:%s" % port)
topicfilter = "9"
socket.setsockopt_string(zmq.SUBSCRIBE, '')

while True:
    string = socket.recv()
    topic, messagedata = string.split()
    print(topic, messagedata)

I wanted to measure the avg. delivery latency between the producer and the consumer. I wanted to know how to go about measuring the same.

Regards,
Aditya


Reply all
Reply to author
Forward
0 new messages