heroku schedulerを使い、タスクスケジュールを実行する
heroku schedulerとは
Paasサービスherokuにてデプロイしたアプリの定期的なタスクスケジュールを管理する無料のadd-onです。
私の取り組んでいるアプリ
初学者です。JavaEEで、フードロス対策の視点から、食料品店の売れ残り商品を値下げしたものを各店舗が公開し、消費者が閲覧する簡易なアプリを作っています。
schedulerを使用した箇所
各商品に販売開始・終了時間を設定し、終了時刻になったら商品を終了表示にする。という部分にsqlとheroku schedulerを使用しました。
SQL
SQLはpostgreSQLです。
String sql = "INSERT INTO endGoods(カラム)select
カラム from goods where end_time <= clock_timestamp()" ;
・2つのテーブルgoodsとendGoodsを用意し、指定条件時にテーブル間をデータが移動します。
・ <=clock_timestamp() は現在時刻または現在時刻以前のものを対象とします。
heroku scheduler
・scheduler の設定方法は以下を参考にしました。
https://devcenter.heroku.com/ja/articles/scheduler
・curl コマンドでsql実行文を記述したservletを指定します。
curlコマンドとは、Web サイトへ http リクエストを送信してコンテンツを表示するというものだそうです。以下サイトなどを参考にしました。
https://tech-lab.sios.jp/archives/29999
・heroku はUTCの設定なので時差を考慮します。
herokuのアプリのTZをbashで確認し、JSTに変更するには、、以下のサイトを参考にしました。
https://qiita.com/Horie1024/items/85688099707610f70fa6