springcloud——服务提供者的集群并把多个服务提供者注册到多个eurekaServer中

1、服务提供者1的控制器

package com.springcloud.controller;

import com.springcloud.enties.CommonResult;
import com.springcloud.enties.Payment;
import com.springcloud.service.PaymentService;
import lombok.extern.log4j.Log4j;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @author dc
 * @date 2020/7/18 - 16:43
 */

@RestController
@Slf4j
public class PaymentController {

    @Resource
    private PaymentService paymentService;

    @Value("${server.port}")
    private String port;

    @PostMapping("/payment/first")
    //此处必须加上@RequestBody 注解,否则不能从上一个请求模块中获取payment值。
    public CommonResult doFirst(@RequestBody Payment payment) {

        System.out.println("==========================");

        System.out.println("payment = " + payment);

        int result = paymentService.addPayment(payment);

        log.info("*******插入结果:" + result);

        if (result > 0) {
            return new CommonResult(200, "插入数据库成功 , port = " + port, result);
        }else {
            return new CommonResult(444, "插入数据库失败", null);
        }

    }


    @GetMapping("/payment/second")
    public CommonResult doSecond(Long id) {

        Payment payment = paymentService.findPayment(id);

        log.info("*******查找结果:" + payment);

        if (payment != null) {
            return new CommonResult(200, "数据查找成功 , port = " + port, payment);
        }else {
            return new CommonResult(444, "数据查找失败", payment);
        }
    }


}

2、服务提供者2的控制器

package com.springcloud.controller;

import com.springcloud.enties.CommonResult;
import com.springcloud.enties.Payment;
import com.springcloud.service.PaymentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @author dc
 * @date 2020/7/18 - 16:43
 */

@RestController
@Slf4j
public class PaymentController {

    @Resource
    private PaymentService paymentService;

    @Value("${server.port}")
    private String port;

    @PostMapping("/payment/first")
    //此处必须加上@RequestBody 注解,否则不能从上一个请求模块中获取payment值。
    public CommonResult doFirst(@RequestBody Payment payment) {

        System.out.println("==========================");

        System.out.println("payment = " + payment);

        int result = paymentService.addPayment(payment);

        log.info("*******插入结果:" + result);

        if (result > 0) {
            return new CommonResult(200, "插入数据库成功 , port = " + port, result);
        }else {
            return new CommonResult(444, "插入数据库失败", null);
        }

    }


    @GetMapping("/payment/second")
    public CommonResult doSecond(Long id) {

        Payment payment = paymentService.findPayment(id);

        log.info("*******查找结果:" + payment);

        if (payment != null) {
            return new CommonResult(200, "数据查找成功 , port = " + port, payment);
        }else {
            return new CommonResult(444, "数据查找失败", payment);
        }
    }


}

3、消费者的控制器

package com.springcloud.controller;

import com.springcloud.enties.CommonResult;
import com.springcloud.enties.Payment;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

/**
 * @author dc
 * @date 2020/7/20 - 9:57
 */
@RestController
@Slf4j
public class OrderController {

    //public static final String PAYMENT_URL="http://127.0.0.1:8081";
    public static final String PAYMENT_URL="http://PAYMENT-PROVIDER";

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/consumer/first")
    public CommonResult<Payment> doFirst(Payment payment) {

        System.out.println(payment);
        System.out.println("========================");
        return restTemplate.postForObject(PAYMENT_URL + "/payment/first",
                payment, CommonResult.class);
    }

    @GetMapping("/consumer/second")
    public CommonResult<Payment> doSecond(Long id) {
        return restTemplate.getForObject(PAYMENT_URL + "/payment/second?id=" +
                id, CommonResult.class);
    }

}

4、消费者的配置类

package com.springcloud.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * @author dc
 * @date 2020/7/20 - 10:01
 */

@Configuration
public class ApplicationContextConfig {



    //@Bean:相当于 <bean id="" class=""/>
    @Bean
    @LoadBalanced       //如果集群,必须添加负载均衡注解
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_43925059/article/details/107556710
今日推荐