package edu.fudan.weixin.servlet;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import edu.fudan.eservice.common.utils.ThreadPoolHelper;
import edu.fudan.weixin.kafka.KafkaConsumerHelper;
import edu.fudan.weixin.kafka.PrintCallback;
import edu.fudan.weixin.subscribe.DailyBalanceThread;
import edu.fudan.weixin.subscribe.EcardCallback;
import edu.fudan.weixin.subscribe.ElectricBalanceThread;
import edu.fudan.weixin.subscribe.ElectricLowThread;
public class ServiceInitListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
//start kafka consumer
try{
KafkaConsumerHelper hp= KafkaConsumerHelper.getInstance();
hp.addCallback(new EcardCallback());
hp.start();
//晚上8:00发送一卡通每日余额提醒
Calendar c=Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 20);
c.set(Calendar.MINUTE, 0);
long now=System.currentTimeMillis();
long diff=c.getTimeInMillis()-now;
if(diff<0)
diff+=3600000L*24;
ThreadPoolHelper.getInstance().getSchPool().scheduleAtFixedRate(new DailyBalanceThread(), diff, 3600000L*24,TimeUnit.MILLISECONDS);
//早上8:15发送电费提醒
c.set(Calendar.HOUR_OF_DAY, 8);
c.set(Calendar.MINUTE,15);
diff=c.getTimeInMillis()-now;
if(diff<0)
diff+=3600000L*24;
ThreadPoolHelper.getInstance().getSchPool().scheduleAtFixedRate(new ElectricLowThread(), diff, 3600000L*24,TimeUnit.MILLISECONDS);
ThreadPoolHelper.getInstance().getSchPool().scheduleAtFixedRate(new ElectricBalanceThread(), diff+180000, 3600000L*24,TimeUnit.MILLISECONDS);
}catch(Exception e)
{
e.printStackTrace();
}
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
KafkaConsumerHelper.getInstance().stop();
ThreadPoolHelper.getInstance().getSchPool().shutdown();
}
}