⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memorypersistencechannelstatusobserver.java

📁 监控整个SP系统的SMS信息通道的发送情况并且生成日志。 支持权限判断。
💻 JAVA
字号:
package com.infobank.superchannel.observer.implementation;import java.util.LinkedList;import java.util.List;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.atomic.AtomicReference;import org.apache.commons.configuration.Configuration;import com.infobank.superchannel.daemon.messagelauncher.MessageLauncherDaemon;import com.infobank.superchannel.observer.ChannelStatusObserver;import com.infobank.superchannel.pojo.ChannelInfo;import com.infobank.superchannel.pojo.GenericLog;import com.infobank.superchannel.pojo.TextMessage;import com.infobank.superchannel.pojo.TextMessageLog;import com.infobank.superchannel.util.DaemonConfiguration;/** * @author Xiaoguang Sun * @version 类说明: MemoryPersistence状态观察者 */public class MemoryPersistenceChannelStatusObserver   extends MemoryPersistenceLogObserver  implements ChannelStatusObserver {  private AtomicInteger averageTimeUsagePerMessage=new AtomicInteger(0);  private AtomicInteger numberOfSentMessages=new AtomicInteger(0);  private AtomicInteger numberOfSuccessfulMessages=new AtomicInteger(0);  private AtomicInteger numberOfFailedMessages=new AtomicInteger(0);  private List<TextMessageLog> deliverMessageLog=new LinkedList<TextMessageLog>();  private Object deliverMessageLogMutex=new Object();  private static int maximumDeliverMessageLogSize=100;   private AtomicReference<String> state=new AtomicReference<String>(new String());    public static void init(MessageLauncherDaemon daemon){      String tag=daemon.getTag();    DaemonConfiguration config=DaemonConfiguration.getInstance();      StringBuilder sb=new StringBuilder();      sb.append("/daemon[@type='MessageLauncher' and @tag='");      sb.append(tag);      sb.append("']/observer[@type='ChannelStatusObserver'/capacity[@persistence='Memory']/");    maximumDeliverMessageLogSize=config.getInt(sb.toString());  }  private void checkListSize(List list,int maxsize){    int listSize=list.size();    if(listSize>=maxsize){      list.remove(0);    }  }    /**   * 取得此通道平均发送一条短信所需时间(单位毫秒:1000毫秒=1秒)   * @return 平均发送一条短信所需时间   */  public int getAverageTimeUsagePerMessage(){    return averageTimeUsagePerMessage.get();  }  /**   * 取得此通道累计发送短信息数目   * @return 累计发送短信息条数   */  public int getNumberOfSentMessages(){    return numberOfSentMessages.get();  }    /**   * 取得此通道的消息发送日志   * @return 消息发送日志   */  public List<TextMessageLog> getDeliverMessageLog(){    List<TextMessageLog> log=null;    synchronized(deliverMessageLogMutex){      log=deliverMessageLog;      deliverMessageLog=new LinkedList<TextMessageLog>();    }        return log;  }    /**   * 设置此通道平均发送一条短信所需时间(单位毫秒:1000毫秒=1秒)   * @param number 累计发送失败条数   */  public void averageTimeUsagePerMessage(int seconds) {    averageTimeUsagePerMessage.set(seconds);  }  /**   * 设置当前正在发送的短信息   * @param message 当前正在发送的短信息   */  public void deliverMessage(TextMessage message) {    synchronized(deliverMessageLogMutex){      checkListSize(deliverMessageLog,maximumDeliverMessageLogSize);      deliverMessageLog.add(new TextMessageLog(message));    }  }  /**   * 设置此通道累计发送短信息数目   * @param number 累计发送短信息条数   */  public void numberOfSentMessages(int number) {    numberOfSentMessages.set(number);  }  /**   * 取得此通道累计发送短信息失败条数   * @return 累计发送短信息失败条数   */  public int getNumberOfFailedMessages() {    return numberOfFailedMessages.get();  }  /**   * 取得此通道累计成功发送短信息条数   * @return 累计成功发送短信息条数   */  public int getNumberOfSuccessfulMessages() {    return numberOfSuccessfulMessages.get();  }  /**   * 设置此通道累计发送短信息失败条数   * @param number 累计发送短信息失败条数   */  public void numberOfFailedMessages(int number) {    numberOfFailedMessages.set(number);  }  /**   * 设置此通道累计成功发送短信息条数   * @param number 累计成功发送短信息条数   */  public void numberOfSuccessfulMessages(int number) {    numberOfSuccessfulMessages.set(number);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -