集群環境定時器更新資料庫,只有一台應用執行

2021-08-27 13:25:56 字數 2197 閱讀 4483

批處理任務通過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...