liwenxuan 9 months ago
parent
commit
b0c4eabe6e
  1. 5
      src/main/java/com/hxjt/dataupload/DataUploadApplication.java
  2. 51
      src/main/java/com/hxjt/dataupload/controller/VideoController.java
  3. 15
      src/main/java/com/hxjt/dataupload/schedule/doubleprevention/VideoOrderTask.java
  4. 56
      src/main/java/com/hxjt/dataupload/task/AsyncTask.java
  5. 248
      src/main/java/com/hxjt/dataupload/utils/HttpUtils.java
  6. 91
      src/main/java/com/hxjt/dataupload/utils/JsonData.java

5
src/main/java/com/hxjt/dataupload/DataUploadApplication.java

@ -2,9 +2,12 @@ package com.hxjt.dataupload;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
//@ComponentScan({"net.xdclass.controller","net.xdclass.package2"})
@EnableScheduling
@EnableAsync
public class DataUploadApplication {
public static void main(String[] args) {

51
src/main/java/com/hxjt/dataupload/controller/VideoController.java

@ -1,38 +1,69 @@
package com.hxjt.dataupload.controller;
import com.hxjt.dataupload.task.AsyncTask;
import com.hxjt.dataupload.utils.JsonData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
/**
* 视频控制器
* liwenxuan
*/
//@Controller
@RestController
@RequestMapping("/api/v1/video")
public class VideoController {
@Autowired
private AsyncTask asyncTask;
@RequestMapping("list")
//@GetMapping("list")
//@PostMapping("list")
//@ResponseBody
public Object list(){
Map<String,String > map = new HashMap<>();
map.put("1","面试专题课程");
map.put("2","SpringCloud微服务课程");
map.put("1","asdfdsa");
map.put("2","S6543465");
return map;
}
@GetMapping("async")
public JsonData testAsync(){
long begin = System.currentTimeMillis();
/*asyncTask.task1();
asyncTask.task2();
asyncTask.task3();*/
Future<String> task4 = asyncTask.task4();
Future<String> task5 = asyncTask.task5();
for(;;){
if(task4.isDone() && task5.isDone()){
try {
String task4Result = task4.get();
System.out.println(task4Result);
String task5Result = task5.get();
System.out.println(task5Result);
}catch (InterruptedException e){
e.printStackTrace();
}catch (ExecutionException e){
e.printStackTrace();
}finally {
break;
}
}
}
long end = System.currentTimeMillis();
return JsonData.buildSuccess(end-begin);
}
}

15
src/main/java/com/hxjt/dataupload/schedule/doubleprevention/VideoOrderTask.java

@ -0,0 +1,15 @@
package com.hxjt.dataupload.schedule.doubleprevention;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@Component
public class VideoOrderTask {
@Scheduled(fixedRate = 500000)
public void sum(){
System.out.println(LocalDateTime.now()+"当前交易额"+Math.random());
}
}

56
src/main/java/com/hxjt/dataupload/task/AsyncTask.java

@ -0,0 +1,56 @@
package com.hxjt.dataupload.task;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.stereotype.Component;
import java.util.concurrent.Future;
@Component
@Async
public class AsyncTask {
public void task1(){
try {
Thread.sleep(4000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("task 1");
}
public void task2(){
try {
Thread.sleep(4000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("task 2");
}
public void task3(){
try {
Thread.sleep(4000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("task 3");
}
public Future<String> task4(){
try {
Thread.sleep(4000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("task 4");
return new AsyncResult<String>("task4");
}
public Future<String> task5(){
try {
Thread.sleep(4000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("task 5");
return new AsyncResult<String>("task5");
}
}

248
src/main/java/com/hxjt/dataupload/utils/HttpUtils.java

@ -0,0 +1,248 @@
package com.hxjt.dataupload.utils;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.ParseException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.apache.tomcat.util.http.fileupload.ByteArrayOutputStream;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* 工具类用于发送getpost请求
*/
public class HttpUtils {
public static String doGet(String httpurl) {
HttpURLConnection connection = null;
InputStream is = null;
BufferedReader br = null;
String result = null;// 返回结果字符串
try {
// 创建远程url连接对象
URL url = new URL(httpurl);
// 通过远程url连接对象打开一个连接,强转成httpURLConnection类
connection = (HttpURLConnection) url.openConnection();
// 设置连接方式:get
connection.setRequestMethod("GET");
// 设置连接主机服务器的超时时间:15000毫秒
connection.setConnectTimeout(15000);
// 设置读取远程返回的数据时间:60000毫秒
connection.setReadTimeout(60000);
// 发送请求
connection.connect();
// 通过connection连接,获取输入流
if (connection.getResponseCode() == 200) {
is = connection.getInputStream();
// 封装输入流is,并指定字符集
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
// 存放数据
StringBuffer sbf = new StringBuffer();
String temp = null;
while ((temp = br.readLine()) != null) {
sbf.append(temp);
sbf.append("\r\n");
}
result = sbf.toString();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
connection.disconnect();// 关闭远程连接
}
return result;
}
public static String doPost(String url, String param) {
String result = "";
DataOutputStream dataOutputStreamSend = null;
InputStream inputStream = null;
ByteArrayOutputStream dataOutputStream = null;
try {
URL httpUrl = new URL(url);
HttpURLConnection urlConnection = (HttpURLConnection)httpUrl.openConnection();
// 设置超时时间
urlConnection.setConnectTimeout(10000);
urlConnection.setReadTimeout(30000);
urlConnection.setRequestMethod("POST");
// 设置通用请求类型
urlConnection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
urlConnection.setRequestProperty("Charset", "UTF-8");
// 设置链接状态
urlConnection.setRequestProperty("connection", "keep-alive");
// post请求,参数要放在http正文内,因此需要设为true, 默认情况下是false;
urlConnection.setDoOutput(true);
// 设置是否从httpUrlConnection读入,默认情况下是true;
urlConnection.setDoInput(true);
// Post 请求不能使用缓存
urlConnection.setUseCaches(false);
// 设置本次连接是否自动处理重定向
urlConnection.setInstanceFollowRedirects(true);
urlConnection.connect();
// ++++++++++++++++++++++++++++++++++
// TODO 写入参数
dataOutputStreamSend = new DataOutputStream(urlConnection.getOutputStream());
dataOutputStreamSend.write(param.getBytes());
dataOutputStreamSend.flush();
// +++++++++++++++++++++++++++++++
if (urlConnection.getResponseCode() == 200) {
// 获取返回流
result = getResult(urlConnection.getInputStream());
}
} catch (IOException e) {
// url格式错误
e.printStackTrace();
}
return result;
}
private static String getResult(InputStream inputStream) {
String result = "";
ByteArrayOutputStream dataOutputStream = null;
try {
byte[] buf = new byte[1024];
int n;
dataOutputStream = new ByteArrayOutputStream();
while (((n = inputStream.read(buf)) != -1)) {
dataOutputStream.write(buf, 0, n);
}
dataOutputStream.toByteArray();
result = new String(dataOutputStream.toByteArray(), "UTF-8");
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/**
* post 发送数据
*/
public static String sendPost(String message,String url) {
String response = "";
CloseableHttpClient httpClient = HttpClients.createDefault();
ResponseHandler<String> responseHandler = new BasicResponseHandler();
try {
// API地址
httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
// 构建消息实体
StringEntity requestEntity = new StringEntity(message, "utf-8");
requestEntity.setContentEncoding("UTF-8");
// 构造消息头
// 发送Json格式的数据请求
httpPost.setHeader("Content-type", "application/json");
httpPost.setEntity(requestEntity);
//发送post请求获取响应值
String returnValue = httpClient.execute(httpPost, responseHandler);
if (returnValue != null) {
response = returnValue;
}
} catch (Exception e) {
System.err.println(e);
} finally {
try {
httpClient.close();
} catch (IOException e) {
// TODO Auto-generated catch block
System.err.println(e);
}
}
return response;
}
/**
* 发送post请求
* @param url 路径
* @param jsonObject 参数(json类型)
* @param encoding 编码格式
* @return
* @throws ParseException
* @throws IOException
*/
public static String send(String url, JSONObject jsonObject, String encoding, String userKey, String userToken) throws ParseException, IOException{
String body = "";
//创建httpclient对象
CloseableHttpClient client = HttpClients.createDefault();
//创建post方式请求对象
HttpPost httpPost = new HttpPost(url);
//装填参数
StringEntity s = new StringEntity(jsonObject.toString(), "utf-8");
s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,
"application/json"));
//设置参数到请求对象中
httpPost.setEntity(s);
// System.out.println("请求参数:"+nvps.toString());
//设置header信息
//指定报文头【Content-type】、【User-Agent】
httpPost.setHeader("Content-type", "application/json");
httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
httpPost.setHeader("user-token",userToken);
httpPost.setHeader("user-key",userKey);
System.out.println("请求地址:"+url);
System.out.println("请求Key:"+userKey);
System.out.println("请求token:"+userToken);
//执行请求操作,并拿到结果(同步阻塞)
CloseableHttpResponse response = client.execute(httpPost);
//获取结果实体
org.apache.http.HttpEntity entity = response.getEntity();
if (entity != null) {
//按指定编码转换结果实体为String类型
body = EntityUtils.toString(entity, encoding);
}
EntityUtils.consume(entity);
//释放链接
response.close();
return body;
}
}

91
src/main/java/com/hxjt/dataupload/utils/JsonData.java

@ -0,0 +1,91 @@
package com.hxjt.dataupload.utils;
public class JsonData {
/**
* 状态码 0表示成功过1表示处理中-1 表示失败
*/
private Integer code;
/**
* 信息表示
*/
private String msg;
/**
* 业务数据
*/
private Object data;
public JsonData(){}
public JsonData(Integer code, Object data, String msg){
this.code = code;
this.data = data;
this.msg = msg;
}
/**
* 成功不用返回数据
* @return
*/
public static com.hxjt.dataupload.utils.JsonData buildSuccess(){
return new com.hxjt.dataupload.utils.JsonData(0,null,null);
}
/**
* 成功返回数据
* @param data
* @return
*/
public static com.hxjt.dataupload.utils.JsonData buildSuccess(Object data){
return new com.hxjt.dataupload.utils.JsonData(0,data,null);
}
/**
* 失败固定状态码
* @param msg
* @return
*/
public static com.hxjt.dataupload.utils.JsonData buildError(String msg){
return new com.hxjt.dataupload.utils.JsonData(1 ,null,msg);
}
/**
* 失败自定义错误码和信息
* @param code
* @param msg
* @return
*/
public static com.hxjt.dataupload.utils.JsonData buildError(Integer code , String msg){
return new com.hxjt.dataupload.utils.JsonData(code ,null,msg);
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
Loading…
Cancel
Save