package com.app.mvc.business.controller;
import com.app.mvc.beans.JsonData;
import com.app.mvc.business.service.TestDataSourceService;
import com.app.mvc.business.service.TestService;
import com.app.mvc.http.HttpClients;
import com.app.mvc.redis.RedisPool;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
@Slf4j
@Controller
@RequestMapping("/test")
public class TestController {
@Resource
private TestDataSourceService testDataSourceService;
@Resource
private TestService testService;
// @Resource(name = "redisPool")
private RedisPool redisPool;
// @Resource
// private MessageProduceService messageProduceService;
@ResponseBody
@RequestMapping(value = "testMq.json", method = RequestMethod.GET)
public JsonData testRabbitMQ(@RequestParam(value = "msg", defaultValue = "test") String msg) throws Exception {
try {
// messageProduceService.pushToMessageQueue(msg);
// messageProduceService.pushToMessageQueue("testQ", "q_" + msg);
} catch (Throwable t) {
log.error("添加消息到rabbitmq出错", t);
return JsonData.error(t.getMessage());
}
return JsonData.success();
}
@ResponseBody
@RequestMapping(value = "testHttp.json", method = RequestMethod.GET)
public ModelAndView testHttp() throws Exception {
ModelAndView mav = new ModelAndView("jsonView");
mav.addObject("sync", HttpClients.syncClient().get("http://www.test.com:8080/product/page.json").getContent());
mav.addObject("async", HttpClients.asyncClient().asyncGet("http://www.test.com:8080/product/page.json").get().getContent());
return mav;
}
@ResponseBody
@RequestMapping(value = "setRedis.do", method = RequestMethod.GET)
public JsonData saveRedis(@RequestParam("k") String k, @RequestParam("v") String v, @RequestParam("timeout") int timeout) {
redisPool.instance().setex(k, timeout, v);
return JsonData.success();
}
@ResponseBody
@RequestMapping(value = "getRedis.do", method = RequestMethod.GET)
public JsonData getRedis(@RequestParam("k") String k) {
return JsonData.success(redisPool.instance().get(k));
//return JsonData.success();
}
@ResponseBody
@RequestMapping(value = "thread.json")
public JsonData threadGroup() {
ThreadGroup group = Thread.currentThread().getThreadGroup();
ThreadGroup topGroup = group;
// 遍历线程组树,获取根线程组
while (group != null) {
topGroup = group;
group = group.getParent();
}
// 激活的线程数加倍
int estimatedSize = topGroup.activeCount() * 2;
Thread[] slackList = new Thread[estimatedSize];
// 获取根线程组的所有线程
int actualSize = topGroup.enumerate(slackList);
// copy into a list that is the exact size
Thread[] list = new Thread[actualSize];
System.arraycopy(slackList, 0, list, 0, actualSize);
log.info("Thread list size == " + list.length);
for (Thread thread : list) {
log.info(thread.getName());
}
return JsonData.success(list);
}
@ResponseBody
@RequestMapping(value = "switch.json")
public JsonData datasourceSwitch(@RequestParam("msg") String msg) {
testDataSourceService.save(msg);
return JsonData.success();
}
@ResponseBody
@RequestMapping(value = "test.json")
public JsonData test() {
testService.start();
return JsonData.success();
}
}