Java邮件发送阻塞线程

Java邮件发送阻塞线程

标签(空格分隔): 邮件 阻塞 线程


[TOC]

1. 背景与问题描述

线上的一个定时后台,每10分钟处理一次。后台具有排它性,出现告警数据时会发送邮件。发送邮件使用JavaEE5的jar包。后台在早上9点51分钟的时候,发送告警邮件时阻塞线程,一直卡在发送的地方,不能正常结束。导致后续的执行无法继续进行。数据积压发现问题。

2. 问题排查和重现

之前遇到过类似的一个问题,HTTP请求时使用默认的超时时间设置,导致线程阻塞,和这个问题的表象非常像。 于是乎,去看邮件发送的代码,果然没有设置超时时间。为了复现问题,做了以下两种情况的测试:

  • 阻止JAVA线程的网络连接,调用发送邮件的方法: 此时线程一直处于等待状态,5分钟后,恢复网络连接,发送邮件的线程依然阻塞。

  • 阻止JAVA线程的网络连接,设置连接超时时间和读取超时时间,调用发送邮件的方法: 此时线程到超时时间,会自动抛出异常,线程结束。

3. 解决方案

直接上代码:

props.put("mail.smtp.connectiontimeout", "10000");
props.put("mail.smtp.timeout", "10000");

把上述两句代码,加到发送邮件代码里面,问题即可解决。

转载于:https://my.oschina.net/intellitor/blog/871483

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值