我有一個線程試圖連接到使用JdbcTemplate的一個數據庫,如下所示重新連接到數據庫x次:如何讓一個線程嘗試使用的JdbcTemplate
JDBCTemplate jdbcTemplate = new JdbcTemplate(dataSource);
try{
jdbcTemplate.execute(new CallableStatementCreator() {
@Override
public CallableStatement createCallableStatement(Connection con)
throws SQLException {
return con.prepareCall(query);
}
}, new CallableStatementCallback() {
@Override
public Object doInCallableStatement(CallableStatement cs)
throws SQLException {
cs.setString(1, subscriberID);
cs.execute();
return null;
}
});
} catch (DataAccessException dae) {
throw new CougarFrameworkException(
"Problem removing subscriber from events queue: "
+ subscriberID, dae);
}
我要確保,如果上述代碼會拋出DataAccessException或SQLException,線程會等待幾秒鐘,然後嘗試重新連接,比如說5次,然後放棄。我怎樣才能做到這一點?另外,如果在執行期間數據庫關閉並再次出現,我如何確保我的程序從此恢復並繼續運行而不是拋出異常並退出?
在此先感謝。
我會推薦使用Spring Retry模板而不是重試自定義代碼。 – 2017-09-12 20:23:04