springcloud-消費者調用服務者

在上篇博文中,我們已經通過阿里的腳手架創建了註冊中心與服務者,本篇博文我們將介紹在消費者工程中請求服務者。

首先我們來創建一個消費者,消費者的創建方式與服務者一致,這裏不再多做贅述。(小夥伴們可以參考上篇博文消費者的創建)

爲了做到演示效果,我們首先在服務者工程中創建一個controller,代碼如下:

package com.example.server;
import org.apache.log4j.Logger;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by Administrator on 2020/4/27.
 */
@RestController
public class ServerDemo {
    private final Logger logger = Logger.getLogger(getClass());
    @RequestMapping(value = "add")
    public Map service(String userId){
        Map m =new HashMap();
        m.put("id",userId);
        logger.info("執行了這裏.");
        return m;
    }

}

然後,修改消費者工程的啓動類

package com.example.costom;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
public class CostomApplication {



	public static void main(String[] args) {
		SpringApplication.run(CostomApplication.class, args);
		while (true){
			try {
				Thread.sleep(Integer.MAX_VALUE);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	@Bean
	@LoadBalanced
	RestTemplate restTemplate(){
		return new RestTemplate();
	}
}

要注意,

@Bean
@LoadBalanced
RestTemplate restTemplate(){
   return new RestTemplate();
}

這幾行代碼是爲了向程序的ioc注入一個bean: restTemplate;並通過@LoadBalanced註解表明這個restRemplate開啓負載均衡的功能。如果不加這幾行代碼,消費者端無法通過服務名請求消費者

現在我們來編寫消費者端的請求代碼

package com.example.costom;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by Administrator on 2020/4/27.
 */
@RestController
public class CostomDemo {
    private final Logger logger = Logger.getLogger(getClass());
    @Autowired
    RestTemplate restTemplate;
    @RequestMapping(value = "query")
        public Map query(String id){
        Map m =new HashMap();
        m.put("id",id);
        logger.info("執行了這裏.");
        //下面這個地址就是服務端的   服務名稱+新建的controller的開放接口...
        return restTemplate.getForObject("http://SERVER/add?userId="+id,Map.class);

    }

}

啓動成功後,訪問消費者的請求接口,便可成功看到服務者的數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章