class Chatter(object): def __init__(self, topic='chatter', port=9000): method = 'bind' self.port = port endpoint = 'tcp://0.0.0.0:%s' % port e = ZmqEndpoint(method, endpoint) self.pub_socket = ZmqPubConnection(zf, e) def get_port(): return self.port def pub(msg): self.pub_socket.publish(msg)
def setup(self, cfg): BasePlugin.setup(self, cfg) self.factory = MZMQFactory(plugin=self) self.factory.plugin = self self.pub_endpoint_uri = cfg.get("pub_endpoint", "tcp://*:9901") self.pub_endpoint = ZmqEndpoint("bind", self.pub_endpoint_uri) self.sub_endpoint_uri = cfg.get("sub_endpoint", "tcp://*:9901") self.sub_endpoint = ZmqEndpoint("connect", self.sub_endpoint_uri) self.pub = ZmqPubConnection(self.factory, self.pub_endpoint) self.sub = ZmqSubConnection(self.factory, self.sub_endpoint) self.sub.subscribe("") self.sub.gotMessage = self.on_message self.subscribe(self.process_event)
class ZmqPlugin(BasePlugin): """ Zero Messaging Queue (ZMQ/0MQ) plugin. """ default_config = { "enabled": False, "pub_endpoint": "tcp://*:9901", "sub_endpoint": "tcp://*:9901" } def setup(self, cfg): BasePlugin.setup(self, cfg) self.factory = MZMQFactory(plugin=self) self.factory.plugin = self self.pub_endpoint_uri = cfg.get("pub_endpoint", "tcp://*:9901") self.pub_endpoint = ZmqEndpoint("bind", self.pub_endpoint_uri) self.sub_endpoint_uri = cfg.get("sub_endpoint", "tcp://*:9901") self.sub_endpoint = ZmqEndpoint("connect", self.sub_endpoint_uri) self.pub = ZmqPubConnection(self.factory, self.pub_endpoint) self.sub = ZmqSubConnection(self.factory, self.sub_endpoint) self.sub.subscribe("") self.sub.gotMessage = self.on_message self.subscribe(self.process_event) def process_event(self, tags, detail): detail_json = str(json.dumps(detail)) self.pub.publish(detail_json, str(" ".join(tags))) def on_message(self, detail, tags): self.logger.debug("ZMQ: [%s] %s" % (tags, detail))
#!/usr/bin/env python import json import pprint import sys from twisted.internet import reactor, defer from txZMQ import ZmqEndpoint, ZmqFactory, ZmqPubConnection, ZmqSubConnection zf = ZmqFactory() pe = ZmqEndpoint("bind", "tcp://*:9901") se = ZmqEndpoint("connect", "tcp://10.0.2.40:9901") pc = ZmqPubConnection(zf, pe) sc = ZmqSubConnection(zf, se) sc.subscribe("") # ("scheduler.scheduler001.new_interval") pc.publish("F*****G WORK") sys.exit(0) def matches(tags, query): if query is None: query = list() tags = set(tags.split(" ")) query = set(query) return query.issubset(tags) def on_message(detail, tags):
def __init__(self, topic='chatter', port=9000): method = 'bind' self.port = port endpoint = 'tcp://0.0.0.0:%s' % port e = ZmqEndpoint(method, endpoint) self.pub_socket = ZmqPubConnection(zf, e)
parser.add_option("-m", "--method", dest="method", help="0MQ socket connection: bind|connect") parser.add_option("-e", "--endpoint", dest="endpoint", help="0MQ Endpoint") parser.add_option("-M", "--mode", dest="mode", help="Mode: publisher|subscriber") parser.set_defaults(method="connect", endpoint="epgm://eth1;239.0.5.3:10011") (options, args) = parser.parse_args() from txZMQ import ZmqFactory, ZmqEndpoint, ZmqPubConnection, ZmqSubConnection import time zf = ZmqFactory() e = ZmqEndpoint(options.method, options.endpoint) if options.mode == "publisher": s = ZmqPubConnection(zf, e) def publish(): data = str(time.time()) print "publishing %r" % data s.publish(data) reactor.callLater(1, publish) publish() else: s = ZmqSubConnection(zf, e) s.subscribe("") def doPrint(*args): print "message received: %r" % (args, )
#!/usr/bin/env python import json import pprint import sys from twisted.internet import reactor, defer from txZMQ import ZmqEndpoint, ZmqFactory, ZmqPubConnection, ZmqSubConnection zf = ZmqFactory() pe = ZmqEndpoint("bind", "tcp://*:9901") se = ZmqEndpoint("connect", "tcp://10.0.2.40:9901") pc = ZmqPubConnection(zf, pe) sc = ZmqSubConnection(zf, se) sc.subscribe("") # ("scheduler.scheduler001.new_interval") pc.publish("F*****G WORK") sys.exit(0) def matches(tags, query): if query is None: query = list() tags = set(tags.split(" ")) query = set(query) return query.issubset(tags)