Java-springboot定时任务实现阿里云域名动态解析 逻辑优化

通过java springboot实现阿里云dns动态解析_YZero_cn的博客-CSDN博客icon-default.png?t=L892https://blog.csdn.net/YZero_cn/article/details/120337681以上面的文章为基础,做了一些定时任务的逻辑改动。

问题

之前将定时任务设置为每小时执行一次,如果间隔时间内出现ipv6地址的变动,会导致一段时间内无法访问域名,而且如果这个jar包在不同的设备上同时执行,会造成域名解析在几个设备的地址之间跳动,典型情景:在电脑上做测试。

优化方法

将定时任务设置成每1分钟执行一次,同时加一道判断,只有满足条件时才会向阿里云服务器申请更改解析变动。

这里的思路是用服务器ping自己的域名,一旦该域名能ping通则跳出任务,只有当目标域名无法ping通后才将本机ipv6地址提供给dns服务商

核心代码:

    @Autowired
    private DDNS ddns;
    /**
     * 定时任务,每隔一分钟更新一次
     */
    @Scheduled(cron = "0 0/1  * *  * ? ")
    public void pingTest(){
        //判断域名是否能ping通
        int  timeOut =  3000 ;
        //超时应该在3钞以上
        boolean status = false;
        try {
            status = InetAddress.getByName("在这里填入你的域名").isReachable(timeOut);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //域名记录与实际地址不符
        if (!status){
            //修改dns解析
            ddns.go();
            log.info("DNS记录与当前ipv6地址不符,重新定向解析");
        } else{
            log.info("dns解析记录与当前地址相同,无需操作");
        }
    }

springboot打包成jar之后在服务器上运行时没办法访问resource文件夹下的文件,所以这里直接将域名,token等值直接写死了,需要修改则需要直接用代码重新打包部署,这个后面还可以再优化一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值