def __init__(self,ep=None): import string RpcConnection.__init__(self,ep=ep) self.conn = None self.exitflag = False if ep : ep.impl = self self.mq_recv ='' #parsing endpoint tuple fields = ep.addr.split(':') self.queue_type = fields.pop().strip().lower() uri = string.join(fields,':') self.address_read,self.address_write = map(string.strip,uri.split('%')) self.sock = None self.af = AF_NONE RpcConnectionMQ_Collection.instance().add(self)
def sendMessage(self,m): if m.calltype & RpcMessage.RETURN: #--- Rpc的调用消息中包含接收消息的队列名称 --- mqname = m.callmsg.extra.props.get('__mq_return__') if mqname: mq = RpcConnectionMQ_Collection.instance().get(mqname) if mq: mq.sendDetail(m) return log_error('__mq_return__:<%s> is not in service mq-list!'%mqname) return False #设置接收消息的队列名称 if self.mq_recv: m.extra.props['__mq_return__'] = self.mq_recv return RpcConnection.sendMessage(self,m)
def initMQEndpoints(self,cfgfile): """ 加载MQ端点配置项 初始化 endpoints common_defs: endpoints: - name: mq_client host: dev1 port: 5672 address: mq_client;{create:always,node:{type:queue,durable:true}} type: qpid - name: mq_server host: dev1 port: 5672 address: mq_server;{create:always,node:{type:queue,durable:true}} type: qpid client: endpoints: - name: mq_client af_mode: AF_WRITE - name: mq_server af_mode: AF_READ endpoint_pairs: - call: mq_server return: mq_client server: endpoints: - name: mq_client af_mode: AF_WRITE - name: mq_server af_mode: AF_READ :param yamlcfg: :return: """ from conn_mq import RpcConnectionMQ_Collection import yaml f = open(cfgfile) props = yaml.load(f.read()) f.close() eps = {} ep_defs = props['common_defs'].get('endpoints',[]) for ep in ep_defs: name = ep['name'] host = ep['host'] port = ep['port'] address = ep['address'] type_ = ep['type'] ep = RpcEndPoint(name=name,host=host,port=port,addr=address,type_=type_) eps[name] = ep server_name = self.currentServer().getName() server_defs = props[server_name] ep_defs = server_defs.get('endpoints',[]) for ep in ep_defs: ep_inst = eps.get( ep['name']) af_mode = ep['af_mode'].lower() if af_mode == 'af_write': af_mode = AF_WRITE else: af_mode = AF_READ ep_inst.open( af_mode ) # mq connection has been added into RpcConnectionMQ_Collection #-- endpoint_pairs pairs = server_defs.get('endpoint_pairs',[]) for pair in pairs: conn_out = RpcConnectionMQ_Collection.instance().get( pair['call'] ) conn_in = RpcConnectionMQ_Collection.instance().get( pair['return']) conn_out.setLoopbackMQ(conn_in) return self
def getConnectionMQCollection(self): from conn_mq import RpcConnectionMQ_Collection return RpcConnectionMQ_Collection.instance()
def initMQEndpoints(self, cfgfile): """ 加载MQ端点配置项 初始化 endpoints common_defs: endpoints: - name: mq_client host: dev1 port: 5672 address: mq_client;{create:always,node:{type:queue,durable:true}} type: qpid - name: mq_server host: dev1 port: 5672 address: mq_server;{create:always,node:{type:queue,durable:true}} type: qpid client: endpoints: - name: mq_client af_mode: AF_WRITE - name: mq_server af_mode: AF_READ endpoint_pairs: - call: mq_server return: mq_client server: endpoints: - name: mq_client af_mode: AF_WRITE - name: mq_server af_mode: AF_READ :param yamlcfg: :return: """ from conn_mq import RpcConnectionMQ_Collection import yaml f = open(cfgfile) props = yaml.load(f.read()) f.close() eps = {} ep_defs = props['common_defs'].get('endpoints', []) for ep in ep_defs: name = ep['name'] host = ep['host'] port = ep['port'] address = ep['address'] type_ = ep['type'] ep = RpcEndPoint(name=name, host=host, port=port, addr=address, type_=type_) eps[name] = ep server_name = self.currentServer().getName() server_defs = props[server_name] ep_defs = server_defs.get('endpoints', []) for ep in ep_defs: ep_inst = eps.get(ep['name']) af_mode = ep['af_mode'].lower() if af_mode == 'af_write': af_mode = AF_WRITE else: af_mode = AF_READ ep_inst.open( af_mode ) # mq connection has been added into RpcConnectionMQ_Collection #-- endpoint_pairs pairs = server_defs.get('endpoint_pairs', []) for pair in pairs: conn_out = RpcConnectionMQ_Collection.instance().get(pair['call']) conn_in = RpcConnectionMQ_Collection.instance().get(pair['return']) conn_out.setLoopbackMQ(conn_in) return self