标签:value balancer cte template feign pid work 个人 山东
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>
application.yml内容:
spring: application: name: sms-module info: name: author:wzy,class:develop,tel:17301394307 server: port: 9001 eureka: client: registerWithEureka: true fetchRegistry: true serverUrl: defaultZone: http://127.0.0.1:8761/eureka instance: #心跳间隔 leaseRenewalIntervalInSeconds: 10
@RequestMapping("/sms") @RestController public class SmsController { @Autowired MessageService msgService; @RequestMapping("/getPerson") public PersonVo getPerson(String phoneNumber){ PersonVo person = new PersonVo(); person.setName("张三"); person.setAge(20); person.setSex(‘男‘); person.setNativePlace("山东菏泽"); person.setIdentityCardId("37132519900809244x"); person.setPhoneNumber("13100001111"); System.out.println("sms收到的phoneNumber : "+phoneNumber); return person; } }
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency>
spring: application: name: feign-demo info: name: cloud feign-demo server: port: 8080 eureka: client: register-with-eureka: true fetch-registry: true serviceUrl: defaultZone: http://127.0.0.1:8761/eureka/ feign: hystrix: enable: false
//暂无熔断,因此无fallback回调 @FeignClient(name = "sms-module") //name对应的是服务名称 public interface FeignSmsClient { //注意,这里是接口 @RequestMapping(value = "/sms/getPerson") //类似于controller中的路径映射,但这不是controller,而是请求的发起端 PersonVo queryPerson(@RequestParam("phoneNumber") String phoneNumber); //普通的参数,如果是uri中的参数,应该用@PathParam,post请求还有@Body模板 }
@RequestMapping("/demo") @RestController public class TestClientController { @Autowired FeignSmsClient feignClient; @RequestMapping("/test2") public PersonVo myGetPerson2(){ PersonVo personVo = null; personVo = feignClient.queryPerson("15611273879"); return personVo; } }
sms-module: #服务名 ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #负载策略配置
public class MyBalance { @Bean public IRule ribbonRule(){ System.out.println("------------------ribbon Rule -------------"); return new RandomRule(); } }
@RibbonClients(value = { @RibbonClient(name="sms-module",configuration = MyBalance.class), @RibbonClient(name="consumer-module",configuration = MyBalance2.class) })
@RequestMapping("/demo") @RestController public class TestClientController { @Autowired private RestTemplate restTemplate; @Autowired private LoadBalancerClient loadBalancerClient; @RequestMapping("/test") public PersonVo myGetPerson(){ ServiceInstance instance = loadBalancerClient.choose("sms-module"); System.out.println("本次执行的实例是:"+instance.getHost()+":"+instance.getPort()); PersonVo personVo = null; personVo = restTemplate.getForObject("http://sms-module/sms/getPerson?phoneNumber=17301394307",PersonVo.class); //注意这里http://后跟的是服务名,而不是实例的ip+port return personVo; } @Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); } }
标签:value balancer cte template feign pid work 个人 山东
原文地址:https://www.cnblogs.com/nevermorewang/p/9311415.html