📄 memorypersistencechannelstatusobserver.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 + -