簡體   English   中英

spring 啟動中的任務調度程序

[英]Task Scheduler in spring boot

我之前問過這個問題,但不幸的是沒有得到答案。

我正在編寫 Spring 引導應用程序。 我們每天向員工發送超過 1000 封電子郵件。

由於每小時可以發送的電子郵件數量有限制,我想每小時向我列表中的 email 地址發送 99 封電子郵件。

我有你在屏幕上看到的代碼,我怎么能用 TASK SCHEDULER 重寫它?

郵件在前面按下發送按鈕后開始(我有一個帶有 POST 方法的端點)郵件所以我不使用在特定時間運行的正常調度程序,無論我的 controller 方法是否被調用從前面。

        Runnable task = () -> {

            int counter = 0;
            long startTime = System.currentTimeMillis();
            for (String emailAddress : usersEmailAddresses) {
                counter++;
                bulkEmailService.send(BulkEmailMessage.builder()
                        .from(bulkEmailMessage.getFrom())
                        .subject(bulkEmailMessage.getSubject())
                        .content(bulkEmailMessage.getContent())
                        .toAddresses(emailAddress)
                        .build());

                if (counter % 99 == 0) {
                    long endTime = System.currentTimeMillis() - startTime;
                    try {
                        Thread.sleep(6000 * 60 * 60 - endTime);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                    startTime = System.currentTimeMillis();
                }
            }

        };
        taskExecutor.execute(task);

您可以創建一個數據庫表來保存用戶調用端點時要執行的任務。 然后,您可以使用調度程序來使用數據庫中保存的數據。

任務 克朗 執行者
Email 0 0 */1 * * * 10

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM