批處理任務通過quartz控制執行的時候,如果有多個部署,就要避免部署的不同應用上的定時任務同時執行而導致的錯誤。
通過oracle的行鎖,控制quartz的執行。
使用spring+quartz+ibatis
ibatis配置檔案中裡面的查詢,如果發現存在對應的行被鎖,直接丟擲異常返回,知道當前任務正在執行
select id, type, systemid, key, value, createid, createtime, oprid, oprtime, reserver1,
reserver2, reserver3
from ht_sysrunparam
order by $orderbyclause$
for update nowait
提供互斥控制的service層方法
/**
* key對應到定時任務的classname全稱
* 配置事務
* @param key --用classname作為key
* @param interval --獲取quartz的執行間隔,單位為毫秒
* @param multinum --異常情況下,多少次執行後,重新執行
* @return
*/public boolean localquartzserviceisrunning(string key,long interval,int multinum) catch (dataacces***ception e) catch (resultlistemptyexception e) catch(exception e)
string statu=cur.getvalue();
date lastupdatetime=cur.getoprtime();//上一次執行時間
long executeinterval=system.currenttimemillis()-lastupdatetime.gettime();
if(boolean.parseboolean(statu))else
}else
}/**
*定時任務完成以後更新執行狀態
* @param key
*/public void updatelocalquartzlock(string key) catch (dataacces***ception e) catch (resultlistemptyexception e)
}
定時器類
public class activityeffectjob
try catch (exception e) finally
}/**
* 當前類名
*/private static final string my_class_name;
static
}.getclassname();
}public sysrunparamservice getsysrunparamservice()
public void setsysrunparamservice(sysrunparamservice sysrunparamservice)
}
建表指令碼
create table ht_sysrunparam
(id varchar2(30),
type varchar2(30),
parenttype varchar2(30),
systemid varchar2(30),
key varchar2(200),
value varchar2(200),
dsc varchar2(500),
createid varchar2(30),
createtime timestamp(6),
oprid varchar2(30),
oprtime timestamp(6),
reserver1 varchar2(100),
reserver2 varchar2(100),
reserver3 varchar2(100)
);
資料庫的定時更新及備份
疫情無情人有情,雖然不能工作,習還是要學的!今天來學習下資料庫的定時更新及備份 關鍵字 資料庫,定時,更新,備份 一.資料庫選擇的是mysql資料庫,先來資料庫的更新吧,咱們來乙個就簡單的例子就行了,這裡用的是python來寫的,指令碼如下圖所示 test資料庫student表中name欄位由fir...
資料庫 Oracle與MySql定時器使用
一 oracle 建立定時器 對於dba來說,資料庫job再熟悉不過了,因為經常要資料庫定時的自動執行一些指令碼,或做資料庫備份,或做資料的提煉,或做資料庫的效能優化,包括重建索引等等的工作。但是,oracle定時器job時間的處理上,千變萬化,今天我把比較常用寫法彙總如下 在總結之前,先把job的...
mysql資料庫的定時器開機設定預設自啟動
不知道你有沒有遇到過mysql資料庫的定器的開機啟動問題,當我們開啟mysql資料庫定時器後,電腦重啟後,定時器會自動關閉,即預設是關閉狀態,所以我們要將預設狀態轉換成開機啟動狀態,轉換後,電腦重啟後定時器就可以自動執行了。在系統盤找到安裝目錄下的my.int檔案 我的位置是 c programda...