Browse Source

nacos restTemplate调用

lyhzzz 2 years ago
parent
commit
e27e8ef19e

+ 1 - 0
README.md

@@ -1,2 +1,3 @@
 ###**v1.0.0**
 
+                                            

+ 2 - 0
src/main/java/com/fdkankan/tk/TakeLookApplication.java

@@ -7,9 +7,11 @@ import org.springframework.boot.CommandLineRunner;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
+import org.springframework.web.client.RestTemplate;
 
 @SpringBootApplication
 @EnableTransactionManagement//开启事务

+ 58 - 0
src/main/java/com/fdkankan/tk/config/RestTemplateConfiguration.java

@@ -0,0 +1,58 @@
+package com.fdkankan.tk.config;
+
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.socket.ConnectionSocketFactory;
+import org.apache.http.conn.socket.PlainConnectionSocketFactory;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.web.client.RestTemplate;
+
+
+@Configuration
+public class RestTemplateConfiguration {
+    @Bean
+    @LoadBalanced
+    public RestTemplate restTemplate() {
+        return new RestTemplate(httpRequestFactory());
+    }
+
+
+    @Bean
+    public ClientHttpRequestFactory httpRequestFactory() {
+        return new HttpComponentsClientHttpRequestFactory(httpClient());
+    }
+
+
+    @Bean
+    public HttpClient httpClient() {
+        Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
+                .register("http", PlainConnectionSocketFactory.getSocketFactory())
+                .register("https", SSLConnectionSocketFactory.getSocketFactory())
+                .build();
+        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry);
+        //设置整个连接池最大连接数
+        connectionManager.setMaxTotal(400);
+
+        //路由是对maxTotal的细分
+        connectionManager.setDefaultMaxPerRoute(100);
+        RequestConfig requestConfig = RequestConfig.custom()
+                .setSocketTimeout(3000)  //返回数据的超时时间
+                .setConnectTimeout(2000) //连接上服务器的超时时间
+                .setConnectionRequestTimeout(1000) //从连接池中获取连接的超时时间
+                .build();
+        return HttpClientBuilder.create()
+                .setDefaultRequestConfig(requestConfig)
+                .setConnectionManager(connectionManager)
+                .build();
+    }
+
+}

+ 3 - 2
src/main/java/com/fdkankan/tk/controller/TestController.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.tk.common.ResultData;
 import com.fdkankan.tk.httpClient.client.LiveClient;
+import com.fdkankan.tk.httpClient.client.RestTemplateLive;
 import com.fdkankan.tk.httpClient.client.WxClient;
 import com.fdkankan.tk.httpClient.request.WxGetQrCodeParam;
 import com.fdkankan.tk.service.IWxService;
@@ -27,11 +28,11 @@ import java.util.concurrent.ExecutorService;
 public class TestController {
 
     @Autowired
-    LiveClient liveClient;
+    RestTemplateLive restTemplateLive;
 
     @GetMapping("/test")
     public ResultData test(@RequestParam(required = false) String roomId){
-        JSONObject jsonObject = liveClient.getDanmaku(roomId);
+        JSONObject jsonObject = restTemplateLive.getDanmaku(roomId);
         if(jsonObject != null && jsonObject.getInteger("code") ==0){
             JSONArray data = jsonObject.getJSONArray("data");
             if(data.size() >0){

+ 37 - 0
src/main/java/com/fdkankan/tk/httpClient/client/RestTemplateLive.java

@@ -0,0 +1,37 @@
+package com.fdkankan.tk.httpClient.client;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+@Service
+@Slf4j
+public class RestTemplateLive {
+    @Autowired
+    RestTemplate restTemplate;
+
+    String basePath = "http://4dkakan-daikan-socket";
+
+    ///service/room-manager/danmaku/{wxRoomId}
+    public JSONObject getDanmaku(String wxRoomId){
+        String url = basePath + "/service/room-manager/danmaku/{wxRoomId}";
+        url = url.replace("{wxRoomId}",wxRoomId);
+        ResponseEntity<JSONObject> responseEntity = restTemplate.getForEntity(url, JSONObject.class);
+        log.info("getDanmaku:roomId:{},resp:{}",wxRoomId,responseEntity);
+        return responseEntity.getBody();
+    }
+
+
+    ///service/room-manager/danmaku/delete/{wxRoomId}
+
+    public JSONObject deleteDanmaku(String wxRoomId){
+        String url = basePath + "/service/room-manager/danmaku/delete/{wxRoomId}";
+        url = url.replace("{wxRoomId}",wxRoomId);
+        ResponseEntity<JSONObject> responseEntity = restTemplate.getForEntity(url, JSONObject.class);
+        log.info("getDanmaku:roomId:{},resp:{}",wxRoomId,responseEntity);
+        return responseEntity.getBody();
+    }
+}

+ 3 - 0
src/main/java/com/fdkankan/tk/service/impl/RoomDanmakuServiceImpl.java

@@ -17,6 +17,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.tk.util.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
 
 import java.util.List;
 import java.util.Set;
@@ -34,6 +35,8 @@ public class RoomDanmakuServiceImpl extends ServiceImpl<IRoomDanmakuMapper, Room
 
     @Autowired
     LiveClient liveClient;
+    @Autowired
+    RestTemplate restTemplate;
 
     @Override
     public void saveDanMaku(String roomId,Integer roomUserId) {