zoukankan      html  css  js  c++  java
  • 通过Linux定时任务实现定时轮询数据库及发送Http请求

    通过Linux定时任务实现定时轮询数据库及发送Http请求

    概述

    有时需要临时增加一个定时任务(需要根据数据库查询结果然后发送HTTP请求),如果在项目中额外增加(Java+Spring+Quartz),则需要编写很多代码,而且还需要重新编译发布,比较麻烦,特别是在紧急情况下的时候。采用Linux脚本,再加上JSP(根据业务需要),可以比较快的解决问题。
    
    

    环境准备

    • 安装MySQL Client
    • 安装curl

    脚本内容

    #!/bin/bash
    #
    # @file test_task.sh
    # @brief test_task
    # @author Huligong1234
    # @version 0.1
    # @date 2018-02-17
    #
    
    #脚本目录
    WORK_DIR=/data/scripts
    
    #日志目录
    LOG_DIR=${WORK_DIR}/logs/test_task
    LOG_FILE_NAME=test_task_`date +%Y%m%d%H`.log
    LOG_FILE=${LOG_DIR}/${LOG_FILE_NAME}
    
    #MySQL连接信息
    MYSQL_HOST="192.168.1.106"
    MYSQL_USER="readonly"
    MYSQL_PWD="readonly"
    MYSQL_DATABASE="myproj"
    
    #目标HTTP地址
    SENDTO_NOTIFY_URL="http://192.168.1.106:8081/notify/notify.jsp"
    #SENDTO_NOTIFY_URL="http://api.domain.com/notify/notify.jsp"
    
    #查询数据获得目标ID集合
    idList=`mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PWD $MYSQL_DATABASE <<EOF | tail -n +2
    SELECT t.tx_no 
    FROM t_app_log t
    WHERE t.create_date BETWEEN DATE_SUB(NOW(),INTERVAL 5 MINUTE) AND NOW()
    AND t.result_code='SUCCESS'
    ORDER BY t.create_date DESC
    LIMIT 50;
    EOF`
    
    #迭代集合,通过curl逐个发送HTTP请求
    for tid in $idList; 
    do
        echo `date '+%Y-%m-%d %H:%M:%S'` [$tid]  `curl -o /dev/null -s -m 3 --connect-timeout 3 -w %{http_code}  "${SENDTO_NOTIFY_URL}?tx_no=$tid"` >> ${LOG_FILE}
    done
    
    

    crontab配置(每分钟执行一次)

    $ crontab -e #编辑
    $ crontab -l #查看
    
    0 0 * * * /bin/bash /usr/local/tengine/logs/cut-log.sh
    */1 * * * * /bin/bash /data/scripts/test_task.sh
    00 12 * * * /sbin/ntpdate cn.pool.ntp.org
    
    

    备注

    如果脚本是在Windows环境下编写,拷贝到Linux环境下时可能会提示换行符等错误信息,
    可以通过安装dos2unix命令转换:
    
    $ yum -y install dos2unix 
    $ dos2unix test_task.sh 
    
  • 相关阅读:
    【Repost】Comparision of B-Tree and LSM Tree
    字符串经典算法 Knuth-Morris-Pratt Boyer-Moore AC(Aho-Corasick)算法 后缀自动机
    【Leetcode 913】【Hard】Cat and Mouse 博弈论
    【转】初探计算机视觉的三个源头、兼谈人工智能
    MySQL--06(索引)
    MySQL--05(子查询&视图)
    MySQL--04(聚合函数&表连接查询)
    MySQL--03(增删改查&主键)
    MySQL--02
    MySQL--01
  • 原文地址:https://www.cnblogs.com/huligong1234/p/8456955.html
Copyright © 2011-2022 走看看