def start(self): try: socket_front = self.zmq_context.socket(zmq.SUB) socket_front.setsockopt(zmq.SUBSCRIBE, '') socket_front.set_hwm(args.zhwm) socket_front.connect(args.rca) socket_back = self.zmq_context.socket(zmq.PUSH) socket_back.set_hwm(args.zhwm) socket_back.bind('inproc://backend') self._threads = [ Worker(self.zmq_context, i) for i in range(0, WORKERS) ] for thread in self._threads: thread.setDaemon(True) thread.start() zmq.device(zmq.FORWARDER, socket_front, socket_back) except Exception, e: _print(repr(e), "ERROR") _print("bringing down zmq device")
def run_device(in_sock, out_sock, in_addr=None, out_addr=None): try: if in_addr is not None: in_sock.bind(in_addr) if out_addr is not None: out_sock.bind(out_addr) zmq.device(0, in_sock, out_sock) finally: in_sock.close() out_sock.close()
def set_up_sockets(self): self.socket_for_publishers = self.ctx.socket(zmq.SUB) self.socket_for_publishers_address = self.base_address + '-sub' self.socket_for_publishers.bind(self.socket_for_publishers_address) self.socket_for_publishers.setsockopt(zmq.SUBSCRIBE, b'') self.socket_for_subscribers = self.ctx.socket(zmq.PUB) self.socket_for_subscribers_address = self.base_address + '-pub' self.socket_for_subscribers.bind(self.socket_for_subscribers_address) zmq.device(zmq.FORWARDER, self.socket_for_publishers, self.socket_for_subscribers)
def pipeDevice(ns, path, dev_type, fe_addr, fe_type, be_addr, be_type, *_cb): try: context = zmq.Context(1) frontend = context.socket(fe_type) frontend.bind(fe_addr) backend = context.socket(be_type) backend.bind(be_addr) for c in _cb: c(ns, path, context, frontend, backend) zmq.device(dev_type, frontend, backend) except Exception as e: print(e) ns.F("/bin/registerException") finally: pass frontend.close() backend.close() context.term()
def retransmisor(dir_entrada=DIRECCION_ENTRADA, dir_salida=DIRECCION_SALIDA): '''Utiliza un dipositivo forwareder para retransmitir mensajes desde un extremo subscriptor, hacia una extremo emisor. Pueden existir múltiples emisores y múltiples receptores conectados al dispositivo retransmisor. Ver https://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/devices/forwarder.html ''' try: entrada = app.context.socket(zmq.SUB) entrada.bind(dir_entrada) entrada.setsockopt(zmq.SUBSCRIBE, '') salida = app.context.socket(zmq.PUB) salida.bind(dir_salida) print "Launching device" zmq.device(zmq.FORWARDER, entrada, salida) except Exception, e: print e raise e
def _run_zmq_pubsub_forwarder(self, frontend_port, backend_port): import zmq.green as zmq ctx = zmq.Context() frontend_port = frontend_port or 5201 backend_port = backend_port or 5202 print "Starting ZeroMQ forwarder (pubsub)" print "frontend (publisher):", frontend_port print "backend (consumers):", backend_port frontend = ctx.socket(zmq.SUB) frontend.bind("tcp://*:%s" % frontend_port) frontend.setsockopt(zmq.SUBSCRIBE, "") backend = ctx.socket(zmq.PUB) backend.bind("tcp://*:%s" % backend_port) zmq.device(zmq.FORWARDER, frontend, backend)
def start(self): try: socket_front = self.zmq_context.socket(zmq.SUB) socket_front.setsockopt(zmq.SUBSCRIBE, '') socket_front.connect(args.ca) socket_back = self.zmq_context.socket(zmq.DEALER) socket_back.set_hwm(args.zhwm) socket_back.bind('inproc://backend') _threads = [Worker(self.zmq_context, i) for i in range(0, WORKERS) ] for thread in _threads: thread.setDaemon(True) thread.start() zmq.device(zmq.FORWARDER, socket_front, socket_back) except Exception, e: _print(repr(e)) raise Exception(repr(e))
def run_proxy3(ctx): in_sock=ctx.socket(zmq.XSUB) in_sock.bind(ADDR_SUB) out_sock=ctx.socket(zmq.XPUB) out_sock.bind(ADDR_PUB) proxy=zmq.device(zmq.QUEUE,in_sock, out_sock)
def device(device_type, frontend, backend, gevent=False): if gevent: from zmq.green import device else: from zmq import device device(device_type, frontend, backend)
def xxbroker(): xpub = ctx.socket(zmq.XPUB) xpub.bind('tcp://*:5574') xsub = ctx.socket(zmq.XSUB) xsub.bind('tcp://*:5576') zmq.device(zmq.QUEUE, xsub, xpub)