public void run() { Connection conn = null; DTOSet messages = null; SfMsgDefineDTO message = null; int msgCount = 0; DTOSet sendInfos = null; SfMsgSendInfoDTO sendDTO = null; String cellPhone = ""; boolean needSend = false; System.out.println("启动消息服务..."); while (true) { try { sleep(300000); AmsEmailSend send = new AmsEmailSend(); send.sendEmail(); conn = DBManager.getDBConnection(); msgProcessService.finishMessages(conn); // 更新已经处理过的消息的状态。 messages = msgProcessService.getNeedSendMessages(conn); if (messages == null || messages.isEmpty()) { continue; } msgCount = messages.getSize(); for (int i = 0; i < msgCount; i++) { message = (SfMsgDefineDTO) messages.getDTO(i); sendInfos = msgProcessService.getMsgSendInfos(conn, message); if (sendInfos == null || sendInfos.isEmpty()) { continue; } sendService.setMessage(message.getMsgContent()); for (int j = 0; j < sendInfos.getSize(); j++) { sendDTO = (SfMsgSendInfoDTO) sendInfos.getDTO(j); cellPhone = sendDTO.getMsgCellPhone(); needSend = msgProcessService.needSend(conn, sendDTO); if (needSend) { // 需要发送 sendService.addPhoneNum(cellPhone); if (sendService.getPhoneCount() >= sendService.getMaxPhoneNum()) { sendService.sendMessage(); sendService.clearPhoneList(); } } if (needSend) { msgProcessService.processSendLog(conn, sendDTO, cellPhone); } } if (sendService.getPhoneCount() > 0) { sendService.sendMessage(); sendService.clearPhoneList(); } } } catch (PoolException ex) { ex.printLog(); } catch (InterruptedException ex) { Logger.logError(ex); } catch (QueryException ex) { ex.printLog(); } catch (DataHandleException ex) { ex.printLog(); } catch (OutOfBoundsException ex) { Logger.logError(ex); } catch (NoSuchProviderException e) { Logger.logError(e); } finally { DBManager.closeDBConnection(conn); } } }
public void setSMSConfig(SMSConfig smsConfig) { msgProcessService.setSMSConfig(smsConfig); }