记一次项目分享
一次消息通知之邮件通知的项目分享内容。
项目介绍
邮件通知服务。香港客户服务有客流和交通,在主业务之外,需要消息通知服务,目前消息是通过邮件的形式通知。通知内容主要包括 实时预警和日报统计两部分。
消息服务基本要求:
a) 实时性:客流和交通预警产生后,能及时通知到客户
b) 有效性:客流和交通要求对摄像头进行过滤,只有指定摄像头下产生的指定类型的预警,才会通知给客户
c) 可配置:可配置统计时间段,可指定邮件接收人等
d) 可靠性:保证邮件内送达每一个要接收的用户
邮件服务内容包括:
a) 系统接入客流和交通的预警。1.交通预警通过接口,订阅指定topic的预警消息,增量查询;2.客流预警通过直连他们mongo,自查询新预警;
b) 新预警进来,需要同时做两件事。1.邮件通知用户;2.预警和邮件发送信息入库Mysql;
c) 邮件通知有失败情况,为保证消息可靠性,需要失败邮件重发机制。这个依赖数据库email表的发送状态字段,定时扫描失败邮件,重新发送
注意事项:
1.邮件sdk 里面是可以一次填充多个收件人
2.sdk里面的三个超时时间
connection-timeout:邮件服务器连接超时时间
timeout:邮件附件之类的IO资源的获取超时时间
writetimeout:邮件发送这一步的超时时间,发送的人越多,邮件的内容越大,需要发送的时间越长
3.Springboot所有带@Scheduled 注解是的方法都是共用一个线程。要实现每个任务都一个独立的线程去运行的,则需要如下配置:
点击查看代码
@Configuration
public class ScheduleConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
scheduledTaskRegistrar.setScheduler(Executors.newScheduledThreadPool(5));
}
}
4.monggo有支持springboot的连接池插件有线程池的配置,需要引入依赖,直接在配置文件中配置即可
点击查看代码
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>mongodb-plus-spring-boot-starter</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>
点击查看代码
spring.data.mongodb.option.min-connection-per-host=0
spring.data.mongodb.option.max-connection-per-host=100
spring.data.mongodb.option.threads-allowed-to-block-for-connection-multiplier=5
spring.data.mongodb.option.server-selection-timeout=30000
spring.data.mongodb.option.max-wait-time=120000
spring.data.mongodb.option.max-connection-idle-time=0
spring.data.mongodb.option.max-connection-life-time=0
spring.data.mongodb.option.connect-timeout=10000
spring.data.mongodb.option.socket-timeout=0
spring.data.mongodb.option.socket-keep-alive=false
spring.data.mongodb.option.ssl-enabled=false
spring.data.mongodb.option.ssl-invalid-host-name-allowed=false
spring.data.mongodb.option.always-use-m-beans=false
spring.data.mongodb.option.heartbeat-socket-timeout=20000
spring.data.mongodb.option.heartbeat-connect-timeout=20000
spring.data.mongodb.option.min-heartbeat-frequency=500
spring.data.mongodb.option.heartbeat-frequency=10000
spring.data.mongodb.option.local-threshold=15
5.Mongo查询默认是按照_id 插入顺序查询,_id 插入顺序也是时间的先后顺序。但是,mongotemplete 默认查询有偶尔会有误差,所以在使用mongoTemplete查询的时候需要指定排序字段_id asc
本文来自博客园,作者:Eular,转载请注明原文链接:https://www.cnblogs.com/euler-blog/p/18608927
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通