验证发送邮件的时候报错

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小蓝 2023-02-16 10:00:09

同学你好,仅从同学提供的报错片段,只能分析出报错是因为向线程池提交任务时被拒绝了,但是根本原因应该在后续的报错信息中。

建议同学提供报错信息时,不要只提供片段,要提供完整的信息。

祝学习愉快~

  • 提问者 查杀1号 #1

    从报错堆栈中分析到是无法链接redis导致的,如果按照视频代码来写的话,Redisson连接的时候的ip是127.0.0.1,而我的redis是部署到虚拟机上的,所以连接redis时必然会报错的,而课程中的示例,redis的ip就是localhost,所以不会报错。

    @Override
    public Boolean saveEmailToRedis(String emailAddress, String verificationCode) {
        RedissonClient client = Redisson.create();
        RBucket<String> bucket = client.getBucket(emailAddress);
        boolean exists = bucket.isExists();
        if (!exists) {
            bucket.set(verificationCode, 60, TimeUnit.SECONDS);
            return true;
        }
        return false;
    }

    所以以上代码需要调整,需要对redis的host、port、password进行设置才能连接成功

    @Override
    public Boolean saveEmailToRedis(String emailAddress, String verificationCode) {
        Config config = new Config();
        config.useSingleServer().setAddress("redis://192.168.148.140:6379").setPassword("*****");
        // 创建客户端
        RedissonClient client = Redisson.create(config);
        // 取出相应的email验证码
        RBucket<String> bucket = client.getBucket(emailAddress);
        // 判断缓存是否存在
        boolean exists = bucket.isExists();
        if (!exists) {
            bucket.set(verificationCode, 10, TimeUnit.SECONDS);
            return true;
        }
        return false;
    }


    但是我的疑问是,为什么在application.properties文件中redis的配置不能生效呢?


    spring.redis.host=192.168.148.140
    spring.redis.port=6379
    spring.redis.password=******


    2023-02-16 16:17:39
  • 好帮手慕小蓝 回复 提问者 查杀1号 #2

    同学你好,课程中的Redisson是代码的方式进行配置,所以才会导致配置文件中的配置不生效。

    如果想要使用配置文件,则需要单独声明一个配置类,通过配置类来链接Redis。

    祝学习愉快~

    2023-02-16 16:49:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师