hello 各位小伙伴大家好,松哥在最新版的微人事中集成进来了消息中间件 RabbitMQ,结合 RabbitMQ 搭建了独立的邮件服务器 mailserver。
当 hr 向系统中录入一个员工时,录入成功后,系统会自动向消息中间件 RabbitMQ 发送一条消息,这条消息包含了新入职员工的基本信息,然后 mailserver 则专门用来从 RabbitMQ 上消费消息,根据收到的消息,自动的发送一封入职欢迎邮件。
由于邮件发送是一个耗时操作,在旧版微人事里边我当时为了省事直接上的多线程,但是这种方式不易扩展,无法解耦,用过就知道这有多么不方便了。引入 RabbitMQ 之后,有效的实现了系统的解耦,在未来你可能有更多的地方需要发送邮件、短信等,把这些邮件发送、短信发送的服务拎出来做成单独的服务,扩展起来更加方便。
RabbitMQ 虽然用着方便,有很多优势,但是也带来了很多问题,例如网络抖动怎么办?如何确保消息的可靠性?在理想的环境下这些问题都不存在,但是在复杂的生产环境中,什么都是有可能的,所以,我们要通过技术手段去处理这些问题。
松哥之前发过一篇如何在 Spring Boot 中解决 RabbitMQ 可靠性的问题的文章,但是代码排版不是很少,很多小伙伴表示看的脑瓜疼,于是,周末抽空录了两个视频教程,代码直接应用在微人事(https://github.com/lenve/vhr)项目上,手把手教大家这个问题如何解决。
首先来看消息发送确认:
【视频地址】
再来看通过定时任务对发送失败的消息进行重试:
【视频地址】
好了,通过这两个视频,主要向大家介绍了如何确保消息发送的可靠性,至于消息消费的可靠性,松哥明天来和大家捋一捋,如果小伙伴们对完整的微人事项目视频感兴趣,可以看看这篇文章【微人事视频教程】。
好了,视频中涉及到的所有代码包括数据库脚本,都已经提交到 GitHub 和 Gitee 上了,地址分别是:https://github.com/lenve/vhr 和 https://gitee.com/lenve/vhr ,小伙伴们可以下载参考。
扫码关注微信公众号 江南一点雨,回复 2TB,获取超 2TB Java 学习教程~