Atitit.提高軟件穩定性---基於數據庫實現的持久化 循環隊列 環形隊列java
1.1. 用一個遊標last 來指示 (指針表字段last ),麻煩的,不推薦 1.net
1.2. (簡單,推薦)使用循環次數來指示,每循環加1 (字段cirTimes),order by cirtimes 1設計
4. 表格設計id, cirTimes,createtime,handlerID,recID,delFlag 1指針
1.4. 抓取要處理的元素 peek(int fetchCount) delFlag=0,order by cirtimes 2隊列
1.5. 出隊並追加到隊尾remove,removeALL(list)::: cirtimes++; 2
挑選李一瓦,馬個適合的implet
爲甚要使用循環隊列 ,,能夠大的提高隊列的穩定性..防止推送消息outdate不送...and避免隊列卡住
做者::老哇的爪子Attilax艾龍,EMAIL:1466519819@qq.com
轉載請註明來源: http://blog.csdn.net/attilax
id, cirTimes,createtime,handlerID,recID,delFlag
handlerID::可讓許多的處理器使用,每一個processor只得到本身的隊列..
recid::關聯的rec id...
public List peek(int fetchCount) {
// attilax 老哇的爪子 m_9_r o7s
final List li=new ArrayList();
// noticeFlag is null
String hql="from GvDownloadTask where 1=1 and downloadStatus is null order by noticeFlag ";
Query q = getSession().createQuery(hql);
q.setFirstResult(0);
q.setMaxResults(fetchCount);
List l = q.list();
return l;
}
t.setNoticeFlag(t.getNoticeFlag()+1);
c.merge(t);