Skip to content

Instantly share code, notes, and snippets.

@dennischen
Created December 5, 2019 03:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dennischen/08f5cdb77575a9d024f9d6a89925735d to your computer and use it in GitHub Desktop.
Save dennischen/08f5cdb77575a9d024f9d6a89925735d to your computer and use it in GitHub Desktop.
Yingzhun Gear Scheduler Hint
public class GearRuleExaminationListener implements MessageListener {
@EJB
RuleActionSender actionSender;
public void onMessage(Message message) {
try {
TextMessage textMessage = (TextMessage) message;
String body = textMessage.getText();
GearRuleExaminationParameter p = Jsons.fromJson(body, GearRuleExaminationParameter.class);
onMessage(p);
} catch (Exception e) {
logger.error(e.getMessage(),e);
}
}
private void onMessage(GearRuleExaminationParameter p) throws Exception{
...
}
}
public class HourlyReportTimer extends Log2ReportTimer{
protected void doTimeout() {
generalReportTimeout(ReportUnit.HOUR,GearReport.GMT0, getEnabledLocationAndType());
}
}
public class MonitorQueryListener implements MessageListener {
public void onMessage(Message message) {
try {
TextMessage textMessage = (TextMessage) message;
String body = textMessage.getText();
MonitorQueryParameter p = Jsons.fromJson(body, MonitorQueryParameter.class);
doQuery(p);
} catch (Exception e) {
logger.error(e.getMessage(), e);
LogServices.critial(LogServices.USER_SYSTEM, getClass().getSimpleName(), null, e.getClass()
.getSimpleName(), e.getMessage());
}
}
private void doQuery(MonitorQueryParameter p) {
...
}
protected void save(Recorder recorder, String location, GearLog log) {
recorder.saveLog(location, log);
}
protected GearLog getLast(Recorder recorder, String location) {
return recorder.getLastLog(location, System.currentTimeMillis(), compareLimitInMinute * 60000);
}
}
public class MonitorQueryTimer extends AbstractTimerBean{
@EJB
MonitorQuerySender sender;
protected void doTimeout() {
GearMonitorService service = Services.getService(GearMonitorService.class);
for(MonitorParamInfo info:service.listEnabledMonitorParamInfo()){
sender.send(new MonitorQueryParameter(info.getGearType(), info.getParams()));
}
}
}
public class RuleExaminationTimer extends AbstractTimerBean{
@EJB
private GearMonitorExaminationSender sender;
protected void doTimeout() {
GearMonitorService monitorService = Services.getService(GearMonitorService.class);
List<GearMonitor> monistors = monitorService.listEnabledMonitorByHasEnabledRules();
for(GearMonitor monitor:monistors){
sender.send(new GearMonitorExaminationParameter(monitor.getUuid()));
}
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<config name="yingzhun-ejb" depends="yingzhun" >
<ejb>
<schedulers>
<scheduler name="MonitorQueryTimer">
<jndi>java:app/yingzhun-ejb/MonitorQueryTimer</jndi>
<!-- start every 15s -->
<expression>0/15 * *</expression>
</scheduler>
<scheduler name="RuleExaminationTimer">
<jndi>java:app/yingzhun-ejb/RuleExaminationTimer</jndi>
<!-- start every 30s -->
<expression>30 * *</expression>
</scheduler>
<scheduler name="HourlyReportTimer">
<jndi>java:app/yingzhun-ejb/HourlyReportTimer</jndi>
<!--
ScheduleExpression string with the order [second minute hour dayOfMonth month dayOfWeek year] and split by space
-->
<!-- start from every hour, minute 00, repeat every 15 min -->
<expression>0 0/15 *</expression>
</scheduler>
<scheduler name="DailyReportTimer">
<jndi>java:app/yingzhun-ejb/DailyReportTimer</jndi>
<!-- start from every day, 1 am, repeat every 3 hour -->
<expression>0 0 1/3 *</expression>
</scheduler>
<scheduler name="MonthlyReportTimer">
<jndi>java:app/yingzhun-ejb/MonthlyReportTimer</jndi>
<!-- start from every day 2 am -->
<expression>0 0 2 *</expression>
</scheduler>
</schedulers>
</ejb>
</config>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment