随着业务需求的增多,需要对现有服务进行拆分。
方案实现所用技术:spring cloud+consul+fegin+actuator
使用版本:spring boot:1.5.11.RELEASE
spring-cloud-dependencies:Edgware.SR3
consul:1.2.0
建立一个服务消费者,2个服务提供者
wx-open-service:服务消费者,调用服务提供者id-produce生成订单号
id-produce-service:服务提供者,生成订单号
id-produce-service_2:服务提供者,生成订单号
服务提供者id-produce实现:
1.pom.xml中添加依赖
application.properties
IDProduceInterface应用程序启动入口:
@EnableDiscoveryClient // 使用服务注册发现时请启用
@EnableFeignClients // 使用Feign微服务调用时请启用
启动服务后,登陆consul查看:
注册服务列表:
id-produce订单号生成服务注册了两个服务节点:
服务消费者wx-open-service实现:
application.properites
应用程序启动入口
@SpringBootApplication
@EnableDiscoveryClient // 使用服务注册发现时请启用,如果只是服务调用不启用
@EnableFeignClients // 使用Feign微服务调用时请启用
消费订单服务过程
建立proxy/IDProduceService类
package com.fusion.wxopen.proxy;
/**
* Created by lijing on 2018/8/2.
*/
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.HashMap;
/**
* 订单ID服务接口
*
* @author lijing
*/
@FeignClient("id-produce")
public interface IDProduceService {
@RequestMapping("/pay/id/produce")
public StringproduceID(HashMap req_param);
}
WxOpenControll实现接口
/**
* Created by admin-win8 on 2018/8/2.
*/
@RestController
public class WxOpenControll {
private static final LoggerLOGGER = LoggerFactory.getLogger(WxOpenControll.class);
@Autowired
private IDProduceServiceidProduceService;
@RequestMapping(value ="/pay/getOrderInfo", method={RequestMethod.POST})
@ResponseBody
public StringgetOrderReq(HttpServletRequest request, HttpServletResponse response)throws Exception {
HashMap req_param=new HashMap();
String shop_id=request.getParameter("shop_id");
String pay_type=request.getParameter("shop_id");
req_param.put("shop_id",shop_id);
req_param.put("pay_type",pay_type);
String orderid=idProduceService.produceID(req_param);
LOGGER.info("orderid"+orderid);
return orderid;
}
实现了id-produce服务的消费,两个节点可以轮询调用。