pom.xml,为polaris-java添加dependencyManagement:<dependencyManagement><dependencies><dependency><groupId>com.tencent.polaris</groupId><artifactId>polaris-dependencies</artifactId><version>${version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
<dependencies><dependency><groupId>com.tencent.polaris</groupId><artifactId>polaris-all</artifactId></dependency></dependencies>:
global:serverConnectors:- id: polarisprotocol: grpcaddresses:# 地址需要替换成您创建的北极星引擎的客户端访问地址。- 127.0.0.1:8091#描述: 监控及日志数据上报相关配置statReporter:#描述: 是否启用上报enable: trueplugin:prometheus:type: push# 描述: 设置 pushgateway 的地址, 仅 type == push 时生效# 地址需要替换成您创建的北极星引擎的客户端访问地址。address: 127.0.0.1:9091#描述:设置metric数据推送到pushgateway的执行周期#范围:[1s:...],默认值:10spushInterval: 10s
com.tencent.polaris.circuitbreak.api.CircuitBreakAPI接口中提供。FunctionalDecorator包含以下方法:// 创建CircuitBreakAPI实例CircuitBreakAPI circuitBreakAPI = CircuitBreakAPIFactory.createCircuitBreakAPI();// 通过传入服务名(testService1)和命名空间(default),创建FunctionalDecoratorFunctionalDecoratorRequest makeDecoratorRequest = new FunctionalDecoratorRequest();makeDecoratorRequest.setService(new ServiceKey("default", "testService1"));FunctionalDecorator decorator = circuitBreakAPI.makeFunctionalDecorator(makeDecoratorRequest);// 封装函数接口Consumer<Integer> integerConsumer = decorator.decorateConsumer(new Consumer<Integer>() {@Overridepublic void accept(Integer object) {// 执行服务调用...}});// 通过执行函数接口,进行服务调用// 在调用过程中,如果出现熔断,会抛出CallAbortedException异常for (int i = 0; i < 500; i++) {try {integerConsumer.accept(i);} catch(CallAbortedException e) {e.printStackTrace();}}
// 创建CircuitBreakAPI实例CircuitBreakAPI circuitBreakAPI = CircuitBreakAPIFactory.createCircuitBreakAPI();// 通过传入服务名(testService1)、命名空间(default)和方法名(foo),创建FunctionalDecoratorFunctionalDecoratorRequest makeDecoratorRequest = new FunctionalDecoratorRequest();makeDecoratorRequest.setService(new ServiceKey("default", "testService1"));makeDecoratorRequest.setMethod("foo");FunctionalDecorator decorator = circuitBreakAPI.makeFunctionalDecorator(makeDecoratorRequest);// 封装函数接口Consumer<Integer> integerConsumer = decorator.decorateConsumer(new Consumer<Integer>() {@Overridepublic void accept(Integer object) {// 执行服务接口调用...}});// 通过执行函数接口,进行服务调用// 在调用过程中,如果出现熔断,会抛出CallAbortedException异常for (int i = 0; i < 500; i++) {try {integerConsumer.accept(i);} catch(CallAbortedException e) {e.printStackTrace();}}
import com.tencent.polaris.factory.api.DiscoveryAPIFactory;public static void main(String[] args) throws Exception {ConsumerAPI consumerAPI = DiscoveryAPIFactory.createConsumerAPI();// 执行服务路由,筛选出单个实例,在这个过程中,会自动剔除熔断的实例GetOneInstanceRequest getOneInstanceRequest = new GetOneInstanceRequest();getOneInstanceRequest.setNamespace("default");getOneInstanceRequest.setService("testService1");InstancesResponse oneInstance = consumerAPI.getOneInstance(getOneInstanceRequest);Instance targetInstance = oneInstance.getInstances()[0];// 执行服务调用// invoke rpc call with targetInstance// 上报调用结果,调用结果用于进行熔断判断ServiceCallResult result = new ServiceCallResult();result.setNamespace(namespace);result.setService(service);result.setHost(targetInstance.getHost());result.setPort(targetInstance.getPort());// 设置返回码result.setRetCode(code);// 设置调用时延result.setDelay(delay);// 使用updateServiceCallResult上报调用结果consumerAPI.updateServiceCallResult(result);}
文档反馈