fluffy / php-eureka-client
Netflix Eureka 服务器的 PHP 客户端。
1.0.1
2018-01-27 17:19 UTC
Requires
Requires (Dev)
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2024-09-06 13:15:22 UTC
README
PHP Eureka 客户端
PHP 客户端,用于 Netflix Eureka 服务器。[Netflix Eureka 服务器] 支持 Eureka 的所有 REST 操作。
安装
运行
composer require fluffy/php-eureka-client
或将其作为依赖添加到您的 composer.json 文件中
"require": {
...
"fluffy/php-eureka-client": "^1.0"
}
使用示例
1. 使用所需的包
use EurekaClient\EurekaClient; use EurekaClient\Instance\Instance; use EurekaClient\Instance\Metadata; use EurekaClient\Instance\DataCenterInfo; use GuzzleHttp\Client;
2. 创建 Eureka 应用实例
// We will use app name and instance id for making requests below. $appName = 'new_app'; $instanceId = 'test_instance_id'; // Create app instance metadata. $metadata = new Metadata(); $metadata->set('test_key', 'test_value'); // Create data center metadata (required for Amazon only). $dataCenterMetadata = new Metadata(); $dataCenterMetadata->set('data_center_test_key', 'data_center_test_value'); // Create data center info (Amazon example). $dataCenterInfo = new DataCenterInfo(); $dataCenterInfo ->setName('Amazon') ->setClass('com.netflix.appinfo.AmazonInfo') ->setMetadata($dataCenterMetadata); // Create data center info (Own Data Center). $dataCenterInfo = new DataCenterInfo(); $dataCenterInfo ->setName('MyOwn') ->setClass('com.netflix.appinfo.MyDataCenterInfo'); // Create Eureka app instance. $instance = new Instance(); $instance ->setInstanceId($instanceId) ->setHostName('test_host_name') ->setApp($appName) ->setIpAddr('127.0.0.1') ->setPort(80) ->setSecurePort(433) ->setHomePageUrl('https://') ->setStatusPageUrl('https:///status') ->setHealthCheckUrl('https:///health-check') ->setSecureHealthCheckUrl('https:///health-check') ->setVipAddress('test_vip_address') ->setSecureVipAddress('test_secure_vip_address') ->setMetadata($metadata) ->setDataCenterInfo($dataCenterInfo);
3. 创建 Eureka 客户端
// Eureka client usage example. // Create guzzle client. $guzzle = new Client(); // Create eureka v2 client. $eurekaClient = new EurekaClient('localhost', 8080, $guzzle); // Create eureka v1 client. $eurekaClient = new EurekaClient('localhost', 8080, $guzzle, 'eureka');
4. 发送请求
try { // Register new application instance. $response = $eurekaClient->register($appName, $instance); // Query for all instances. $allApps = $eurekaClient->getAllApps(); // Query for all application instances. $app = $eurekaClient->getApp($appName); // Query for a specific application instance. $appInstance = $eurekaClient->getAppInstance($appName, $instanceId); // Query for a specific instance. $instance = $eurekaClient->getInstance($instanceId); // Send application instance heartbeat. $response = $eurekaClient->heartBeat($appName, $instanceId); // Take instance out of service. $response = $eurekaClient->takeInstanceOut($appName, $instanceId); // Put instance back into service. $response = $eurekaClient->putInstanceBack($appName, $instanceId); // Update metadata. $response = $eurekaClient->updateAppInstanceMetadata($appName, $instanceId, [ 'new_key' => 'new_value', ]); // Query for all instances under a particular vip address/ $instances = $eurekaClient->getInstancesByVipAddress('test_vip_address'); // Query for all instances under a particular secure vip address. $instances = $eurekaClient->getInstancesBySecureVipAddress('test_secure_vip_address'); // De-register application instance. $response = $eurekaClient->deRegister($appName, $instanceId); } catch (Exception $e) { echo $e->getMessage() . PHP_EOL; }