JAVA項目--從羣體中監控特殊對象

前言:

       在實際項目中會遇到需要單獨監控一個羣體對象的特殊對象的需求,如果只是採取直接從數據庫讀取的方式,在數據量較大的情況下可能導致阻塞。在此記錄分享我最近項目中的處理方式。僅代表個人見解,歡迎指正。

處理邏輯:

步驟一:設計一張數據表,用於持久化記錄需要監聽的對象

步驟二:新建一個工作類用於從數據庫讀取需要監聽的對象,並放置到一個全局的靜態隊列中;

public class TimerJob extends TimerTask {
    private JdbcTemplate jdbcTemplate;

    public TimerJob() {
    }

    public TimerJob(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    @Override
    public void run() {
        if (jdbcTemplate != null) {
            List<String> list = new ArrayList<>();

            jdbcTemplate.query(你的SQL, (ResultSet rs) -> {

                do {
                    list.add(rs.getString(1));
                } while (rs.next());
               全局靜態隊列.clear();
               全局靜態隊列.addAll(list);

            }

            );
        }
    }

步驟四:開啓一個線程,定時執行工作類,更新隊列信息


    @PostConstruct
    void init() {
        Timer timer = new Timer();
        TimerJob timerJob = new TimerJob(jdbcTemplate);
        //更新頻率可以根據實際業務需求而定,我這邊是1天更新一次
       timer.schedule(timerJob, 5000L, 1000 * 3600*24L);
    }

步驟五:對比靜態隊列的信息,根據實際需求進行業務處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章