back_recharge
gaojie 2019-07-04 11:33:18 +08:00
parent 19c2e880ee
commit 31988bce68
8 changed files with 100 additions and 28 deletions

View File

@ -31,6 +31,7 @@ dependencies {
compile("org.luaj:luaj-jse:3.0.1") compile("org.luaj:luaj-jse:3.0.1")
compile("org.apache.thrift:libthrift:0.9.2") compile("org.apache.thrift:libthrift:0.9.2")
compile("com.alibaba:fastjson:1.2.47") compile("com.alibaba:fastjson:1.2.47")
compile("org.apache.httpcomponents:httpclient:4.5.3")
compile files("${System.properties['java.home']}/../lib/tools.jar") compile files("${System.properties['java.home']}/../lib/tools.jar")
} }

View File

@ -12,7 +12,6 @@ import com.ljsd.jieling.logic.STableManager;
import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.dao.MailingSystemManager; import com.ljsd.jieling.logic.dao.MailingSystemManager;
import com.ljsd.jieling.logic.fight.CheckFight; import com.ljsd.jieling.logic.fight.CheckFight;
import com.ljsd.jieling.logic.fight.CombatLogic;
import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.netty.server.NettyGameServer; import com.ljsd.jieling.netty.server.NettyGameServer;
import com.ljsd.jieling.network.NettyProperties; import com.ljsd.jieling.network.NettyProperties;
@ -23,6 +22,7 @@ import com.ljsd.jieling.thread.ThreadManager;
import com.ljsd.jieling.util.KeyGenUtils; import com.ljsd.jieling.util.KeyGenUtils;
import com.ljsd.jieling.util.SensitivewordFilter; import com.ljsd.jieling.util.SensitivewordFilter;
import com.ljsd.jieling.util.TimeUtils; import com.ljsd.jieling.util.TimeUtils;
import com.ljsd.jieling.util.http.HttpPool;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
@ -32,7 +32,6 @@ import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import java.io.PrintStream;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
@ -79,6 +78,8 @@ public class GameApplication {
RedisUtil.getInstence().init(configurableApplicationContext); RedisUtil.getInstence().init(configurableApplicationContext);
MongoUtil.getInstence().init(configurableApplicationContext); MongoUtil.getInstence().init(configurableApplicationContext);
//http线程池初始化
HttpPool.init();
STableManager.initialize("com.ljsd.jieling.config"); STableManager.initialize("com.ljsd.jieling.config");
//初始化邮件 //初始化邮件

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.config.reportData;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.ljsd.common.mogodb.util.BlockingUniqueQueue; import com.ljsd.common.mogodb.util.BlockingUniqueQueue;
import com.ljsd.jieling.util.http.HttpPool;
import java.util.List; import java.util.List;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;
@ -36,13 +37,13 @@ public class DataMessageUtils {
} }
StringBuilder info = new StringBuilder("["); StringBuilder info = new StringBuilder("[");
for (int i =0 ; i < sendDataList.size() ; i++){ for (int i =0 ; i < sendDataList.size() ; i++){
if (i <= (sendDataList.size() -1)){ if (i >= (sendDataList.size() -1)){
info.append(sendDataList.get(i)).append(","); info.append(sendDataList.get(i)).append(",");
}else{ }else{
info.append(sendDataList.get(i)); info.append(sendDataList.get(i));
} }
} }
info.append("]"); info.append("]");
System.out.println(info.toString()); HttpPool.sendPost("",info.toString());
} }
} }

View File

@ -1,21 +0,0 @@
package com.ljsd.jieling.config.reportData;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TlogThread implements Runnable {
@Override
public void run() {
while (true) {
Object take = DataMessageUtils.take();
DataMessageUtils.manageData(take);
}
}
public static void startTlogThread(){
ExecutorService pool = Executors.newCachedThreadPool();
for (int i = 0; i <= 5 ; i++){
TlogThread myThread = new TlogThread();
pool.execute(myThread);
}
}
}

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.thread; package com.ljsd.jieling.thread;
import com.ljsd.jieling.thread.task.DataReportTask;
import com.ljsd.jieling.thread.task.MinuteTask; import com.ljsd.jieling.thread.task.MinuteTask;
import com.ljsd.jieling.thread.task.PlatConfigureTask; import com.ljsd.jieling.thread.task.PlatConfigureTask;
import com.ljsd.jieling.thread.task.RetrySendIndicationThread; import com.ljsd.jieling.thread.task.RetrySendIndicationThread;
@ -23,7 +24,9 @@ public class ThreadManager {
private static PlatConfigureTask platConfigureTask; private static PlatConfigureTask platConfigureTask;
private static DataReportTask dataReportTask;
public static int SLEEP_INTEVAL_TIME = 60; //每1分钟检查一次
private static volatile ScheduledThreadPoolExecutor scheduledExecutor; //管理task private static volatile ScheduledThreadPoolExecutor scheduledExecutor; //管理task
@ -34,7 +37,7 @@ public class ThreadManager {
public void init(ConfigurableApplicationContext configurableApplicationContext) { public void init(ConfigurableApplicationContext configurableApplicationContext) {
platConfigureTask = configurableApplicationContext.getBean(PlatConfigureTask.class); platConfigureTask = configurableApplicationContext.getBean(PlatConfigureTask.class);
dataReportTask = configurableApplicationContext.getBean(DataReportTask.class);
go(); go();
} }
@ -79,7 +82,10 @@ public class ThreadManager {
// testTask 已秒为单位 延迟10s, 间隔30s为周期执行 // testTask 已秒为单位 延迟10s, 间隔30s为周期执行
int delayForMinute = 60 - (now%60); int delayForMinute = 60 - (now%60);
LOGGER.info("delayForMinute---->>>>{}" ,delayForMinute); LOGGER.info("delayForMinute---->>>>{}" ,delayForMinute);
scheduledExecutor.scheduleAtFixedRate(platConfigureTask, 10, PlatConfigureTask.SLEEP_INTEVAL_TIME, TimeUnit.SECONDS); scheduledExecutor.scheduleAtFixedRate(platConfigureTask, 10, SLEEP_INTEVAL_TIME, TimeUnit.SECONDS);
scheduledExecutor.scheduleAtFixedRate(dataReportTask, 10, SLEEP_INTEVAL_TIME, TimeUnit.SECONDS);
scheduledExecutor.scheduleAtFixedRate(new MinuteTask(), delayForMinute, 60, TimeUnit.SECONDS); scheduledExecutor.scheduleAtFixedRate(new MinuteTask(), delayForMinute, 60, TimeUnit.SECONDS);
scheduledExecutor.scheduleAtFixedRate(new Thread(){ scheduledExecutor.scheduleAtFixedRate(new Thread(){
public void run () { public void run () {

View File

@ -0,0 +1,24 @@
package com.ljsd.jieling.thread.task;
import com.ljsd.jieling.config.reportData.DataMessageUtils;
import org.springframework.stereotype.Component;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@Component
public class DataReportTask implements Runnable {
@Override
public void run() {
while (true) {
Object take = DataMessageUtils.take();
DataMessageUtils.manageData(take);
}
}
// public static void startTlogThread(){
// ExecutorService pool = Executors.newCachedThreadPool();
// for (int i = 0; i <= 5 ; i++){
// DataReportTask myThread = new DataReportTask();
// pool.execute(myThread);
// }
// }
}

View File

@ -12,7 +12,6 @@ import java.io.IOException;
public class PlatConfigureTask implements Runnable { public class PlatConfigureTask implements Runnable {
private static final Logger LOGGER = LoggerFactory.getLogger(PlatConfigureTask.class); private static final Logger LOGGER = LoggerFactory.getLogger(PlatConfigureTask.class);
public static int SLEEP_INTEVAL_TIME = 60; //每1分钟检查一次
@Override @Override
public void run() { public void run() {

View File

@ -0,0 +1,61 @@
package com.ljsd.jieling.util.http;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
public class HttpPool {
private static PoolingHttpClientConnectionManager poolConnection = new PoolingHttpClientConnectionManager();
private static CloseableHttpClient httpclient;
private static final Logger LOGGER = LoggerFactory.getLogger(HttpPool.class);
private static int maxSendTimes = 2;
private static int sendIntervalTime = 200;
public static void init(){
poolConnection.setMaxTotal(100);
poolConnection.setDefaultMaxPerRoute(100);
poolConnection.setDefaultMaxPerRoute(10);
httpclient = HttpClients.custom().setConnectionManager(poolConnection).build();
}
public static String sendPost (String url ,String info){
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse;
String retStr = "";
int sendTimes = 0;
try {
httpResponse = httpclient.execute(httpPost);
HttpEntity responseEntity = httpResponse.getEntity();
retStr = EntityUtils.toString(responseEntity, info);
EntityUtils.consume(responseEntity);
int statusCode = httpResponse.getStatusLine().getStatusCode();
if (statusCode >= 200 && statusCode <300){
LOGGER.debug("Http Send第" + (sendTimes + 1) + "次调用成功,返回码为:[" + statusCode + "]");
}else{
LOGGER.error("Http Send第" + (sendTimes + 1) + "次调用出错,返回码为:[" + statusCode + "]");
if (sendTimes + 1 <= maxSendTimes) {
LOGGER.debug("Http Send" + (sendIntervalTime / 1000) + "秒后,重新发起请求...");
try {
Thread.sleep(sendIntervalTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
LOGGER.debug("Http Send达到重发最大次数退出程序");
}
}
} catch (IOException e) {
e.printStackTrace();
}
return retStr;
}
}