📄 generalmessagequeue.java.svn-base
字号:
package com.infobank.superchannel.daemon.messagelauncher;import java.util.LinkedList;import java.util.Queue;import java.util.concurrent.atomic.AtomicInteger;import com.infobank.superchannel.pojo.TextMessage;import com.infobank.superchannel.util.DaemonConfiguration;/** * @author Xiaoguang Sun * @version 类说明: 普通短信息队列实现 */public class GeneralMessageQueue implements MessageQueue { // 消息队列 private Queue<TextMessage> messagesQueue=new LinkedList<TextMessage>(); // capacity private static int capacity=0; /** * 初始化批量短信队列 * @param daemon 消息发送服务器对象 */ public static boolean init(MessageLauncherDaemon daemon){ // 获取批量短信息队列单一内容短信一次发送配额 DaemonConfiguration config=DaemonConfiguration.getInstance(); String tag=daemon.getTag(); StringBuilder sb=new StringBuilder(); sb.append("/daemon[@type='MessageLauncher' and @tag='"); sb.append(tag); sb.append("']/message/queue[@type='General']/capacity"); try{ capacity=config.getInt(sb.toString()); } catch(Exception ex){ return false; } return true; } /** * 新增待发短消息 * @param messages 待发送短消息 */ public void addMessage(Queue<TextMessage> messages) { messagesQueue.addAll(messages); messages.clear(); } /** * 新增待发短消息 * @param message 待发送短消息 */ public void addMessage(TextMessage message) { messagesQueue.add(message); } /** * 从消息队列中取出一定数目的消息 * @return 取出的待发送短消息 */ public Queue<TextMessage> getMessage(int number) { Queue<TextMessage> result=new LinkedList<TextMessage>(); for(int idx=0;idx<number;++idx){ TextMessage message=messagesQueue.poll(); if(message==null){ // no enough messages break; } result.add(message); } return result; } /** * 从消息队列中取出一条待发短消息 * @return 取出的待发送短消息 */ public TextMessage getMessage() { return messagesQueue.poll(); } /** * 取得消息队列当前长度 * @return 消息队列当前长度 */ public int getMessageQueueSize() { return messagesQueue.size(); } public boolean isFull() { return messagesQueue.size()>=capacity; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -