in consumer/proxy/ProxyFactory.php [178:240]
public static function getInstance($consumerInterface, $ioTimeOut = 3, $version = null, $group = null)
{
$ret = NULL;
$route = '';
$addressList = 'null';
//app级组和版本信息
$group = self::$appGroup;
$versionList = self::$appVersion;
if (array_key_exists($consumerInterface, self::$serviceConsumers))
{
$serviceProperty = self::$serviceConsumers[$consumerInterface];
if(isset($serviceProperty['group']))
{
$group = $serviceProperty['group'];
}
if(isset($serviceProperty['version']))
{
$versionList = $serviceProperty['version'];
}
}
try
{
//依据配置权重选取版本号
$version = FSOFCommonUtil::getVersionByWeight($versionList);
//p2p模式
if (self::$p2pMode)
{
$ret = self::getInstanceByP2P($consumerInterface, $ioTimeOut, $version, $group);
$route = 'p2p';
}
if (empty($ret))
{
//registry 模式
$ret = self::getInstancByRedis($consumerInterface, $ioTimeOut, $version, $group);
$route = 'auto registry';
}
if (empty($ret))
{
$errMsg = "current_address:".FSOFSystemUtil::getLocalIP()."|".$consumerInterface;
throw new ConsumerException($errMsg);
}
else
{
$addressList = $ret->getAddressStr();
}
self::$logger->debug('consumer_app:'.self::$appName.'|app_config_file:'.self::$appConfigFile.
'|version:'.$version.'|group:'.$group.'|provider_service:'.$consumerInterface.'|route:'.$route.'|addr_list:'.$addressList.'|timeout:'.$ioTimeOut);
}
catch (\Exception $e)
{
self::$logger->error('consumer_app:'.self::$appName.'|app_config_file:'.self::$appConfigFile.
'|version:'.$version.'|group:'.$group.'|provider_service:'.$consumerInterface.'|errmsg:'. $e->getMessage().'|exceptionmsg:'.$e);
throw new ConsumerException($e->getMessage(), $e);
}
return $ret;
}