Exemple #1
0
	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)
Exemple #2
0
	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)
Exemple #3
0
	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
Exemple #4
0
	def getConnectionMQCollection(self):
		from conn_mq import RpcConnectionMQ_Collection
		return RpcConnectionMQ_Collection.instance()
Exemple #5
0
    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
Exemple #6
0
 def getConnectionMQCollection(self):
     from conn_mq import RpcConnectionMQ_Collection
     return RpcConnectionMQ_Collection.instance()