一 负载均衡
大家有没有发现在上一篇中,我们已经把springcloud负载均衡的配置加入到了项目中,如下图:
并且restTemplate()方法上也加了实现负载均衡的注解@LoadBalanced,如图:
那么我们怎么来演示负载均衡呢?
我们在cloud_cart_service1项目的基础上,重新建一个cloud_cart_service2项目,提供的服务名称一致,端口号变了,如图:
为了方便观察效果,我在details方法上加上一句话表明结果来自哪个服务,如图所示:
启动两个服务提供者以及服务消费者,这时注册中心如下图:
可以看到这时候注册的服务提供者有2个,2222和2221。
接下来我们来执行客户端: http://localhost:9999/client/details.do?id=20191203135140574001,反复执行,发现如图所示的结果:
说明负载均衡实验成功了!!!!
restTemplate参数传递
对于get请求,比较简单,不作探讨,这里重点是来讲一下post请求的参数传递问题。
Post请求一般用的比较多的方法是restTemplate.postForObject(url, params,Object.class);
服务提供者如图所示:
服务提供者我们用@RequestParam注解来接收参数,即可接收post请求,又可以接收get请求,并输出一句话来观察参数是否接收到了
服务消费端我们也用@RequestParam注解来接收参数,如图所示:
接下来执行: http://localhost:9999/client/list.do,观察后台:
发现参数没有传递过来
接下来,我们把服务端的注解改为@RequestBody ,重新执行,观察
,结果如下图所示:
发现参数顺利传递过来了。
当服务提供者硬是要使用@RequestParam注解来接收参数呢,那客户端需要用MultiValueMap来添加参数,不能用hashmap或linkmap来封装参数了。
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
paramMap.add("cartType", "20190624100613533130");
也可以直接写在方法上,如图:
服务提供端:
服务消费端:
执行结果:
这种方式参数也能顺利接收到
Ok,本篇到此为止,希望对您有帮助。