python/zeromq/IOLoop

直接用tornado中的IOLoop代替zmq.eventloop.ioloop

# coding: utf-8

import os
import zmq
import tornado
# from zmq.eventloop.ioloop import IOLoop
from tornado.ioloop import IOLoop
from zmq.eventloop.zmqstream import ZMQStream

# 分类后的日志的zmq的pub地址
LOG_TYPE_PUB_PATH = "tcp://127.0.0.1:5601"

# simulator 日志的zmq的sub地址
LOG_SUB_PATH = "tcp://127.0.0.1:5602"
TOPIC_LIST = ["lator", "att"]


def recv_func(msg):
    print(msg)


def main2():
    loop_instance = IOLoop.instance()
    ctx = zmq.Context.instance()
    sock = ctx.socket(zmq.SUB)
    sock.set_hwm(100)
    sock.connect(LOG_TYPE_PUB_PATH)
    sock.connect(LOG_SUB_PATH)
    for key in TOPIC_LIST:
        sock.setsockopt_string(zmq.SUBSCRIBE, key)
        print("log_broker to set subscribe error:%s" % key)
    sock = ZMQStream(sock, loop_instance)
    sock.on_recv(recv_func)
    loop_instance.start()


if __name__ == "__main__":
    main2()
# coding: utf-8

import zmq
import time
import threading
import os
import stat

# 分类后的日志的zmq的pub地址
LOG_TYPE_PUB_PATH = "tcp://127.0.0.1:5601"

# simulator 日志的zmq的sub地址
LOG_SUB_PATH = "tcp://127.0.0.1:5602"
TOPIC_LIST = ["lator", "att"]


def pub(pubaddr, topic):
    context = zmq.Context()
    sock = context.socket(zmq.PUB)
    sock.set_hwm(100)
    sock.bind(pubaddr)
    counter = 1
    zpath = sock.getsockopt(zmq.LAST_ENDPOINT)
    print(zpath)

    while True:
        messagedata = "this is msg fro topic one %s" % counter
        print("%s %s" % (topic, messagedata))
        sock.send_string("%s %s" % (topic, messagedata))
        counter = counter + 1
        time.sleep(1)


if __name__ == "__main__":
    t1 = threading.Thread(target=pub, args=(LOG_TYPE_PUB_PATH, "lator"))
    t2 = threading.Thread(target=pub, args=(LOG_SUB_PATH, "att"))
    t1.start()
    t2.start()
    t1.join()
    t2.join()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值