springboot项目中如何实现邮件告警功能(监控平台服务模拟)

介绍 

        模拟服务器故障,然后实现邮件告警

 一、首先配置邮件的maven依赖

       

代码如下: 

<!--邮件告警--><!-- Spring Boot的邮件发送依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version></dependency>

 

二、其次在ideal中创建相关类文件

        2.1、创建一个服务类MonitoringService

                 使用Spring的JavaMailSender来发送邮件。

import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;/*** Created by 姜水桦 on 2024/3/21 16:58* 功能描述:*         创建一个服务类,使用Spring的JavaMailSender来发送邮件。*/
@Service
public class MonitoringService {private final JavaMailSender mailSender;public MonitoringService(JavaMailSender mailSender) {this.mailSender = mailSender;}public void sendAlertEmail(String from,String to, String subject, String text) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from);message.setTo(to);message.setSubject(subject);message.setText(text);mailSender.send(message);}
}
        2.2、 定义一个监控类
        在你的监控组件中,当检测到异常时,调用EmailService的sendAlertEmail方法来发送邮件。
package com.example.service;import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;/*** Created by 姜水桦 on 2024/3/21 16:58* 功能描述:*         创建一个服务类,使用Spring的JavaMailSender来发送邮件。*/
@Service
public class MonitoringService {private final JavaMailSender mailSender;public MonitoringService(JavaMailSender mailSender) {this.mailSender = mailSender;}public void sendAlertEmail(String from,String to, String subject, String text) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from);message.setTo(to);message.setSubject(subject);message.setText(text);mailSender.send(message);}
}
         2.3、再创建一个控制器类(逻辑层)
EmailController
package com.example.controller;import com.example.common.AuthAccess;
import com.example.utils.ServiceMonitor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/*** Created by 姜水桦 on 2024/3/21 19:53* 功能描述:*/
@RestController
public class EmailController {@Autowiredprivate ServiceMonitor serviceMonitor;// 每隔30秒执行一次checkServiceStatus方法
//    @Scheduled(fixedRate = 30000)
//    @Scheduled(fixedRate = 1000)@GetMapping("/mail")@AuthAccesspublic void monitorService() {serviceMonitor.checkServiceStatus();}
}
        2.4、 配置application.yml

        

spring:#邮箱配置mail:host: smtp.qq.comport: 465# 使用自己的发送方用户名 + 授权码填充username: jiangshuihua1018@qq.compassword: vyqsovsepomlecdddefault-encoding: UTF-8properties:mail:smtp:ssl:enable: falserequired: falsesocketFactory:class: javax.net.ssl.SSLSocketFactoryallow8bitmime: truedebug: true

注意:这里的密码指的是你QQ账号里面的授权码 

关于如何获取授权码链接地址如下:

如何开启QQ邮箱的SMTP服务和设置授权码 - 知乎 (zhihu.com)

        2.5、最后启动springboot服务器即可

三、在postman中测试用例

        服务器启动后,在postman中测试接口用例 ,因为上面随机数生成在0~1之间,所以if()中的值始终为true,会继续往下执行,实现邮件告警通知。

四、结果展示 

看到如下界面即表示邮件告警成功 

 查看发送到网易的邮箱内容

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/771818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GO 语言基础学习记录(二)

//这里记录一些在学习golang语言基础的时候&#xff0c;发现的一些容易记错的特殊情况&#xff0c;后续发现其他的再补充。 一、变量和数据方面 1.切片和map引用类型 问题描述&#xff1a;在go中&#xff0c;切片和map是引用类型&#xff0c;所以当修改切片值的时候&#xf…

Android 15兼容性框架变更

在准备支持 Android 15 和以该平台为目标平台时&#xff0c;请将此列表与开发者选项和 ADB 命令结合使用&#xff0c;以测试和调试您的应用。 以下是您可以使用兼容性框架工具进行的操作&#xff1a; 在不实际更改应用的 targetSdkVersion 的情况下测试针对性的变更。您可以使…

【嵌入式——QT】多语言界面

【嵌入式——QT】多语言界面 多语言页面开发步骤tr()函数 多语言页面开发步骤 第一步 在你编写的代码中添加tr()函数&#xff0c;方便之后可以精准的定位到你所需要翻译的部分。 第二步 在.pro文件中添加以下代码&#xff0c;这样会让你生成相应的.ts文件&#xff0c;ts文件是…

深度学习Top10算法之深度神经网络DNN

深度神经网络&#xff08;Deep Neural Networks&#xff0c;DNN&#xff09;是人工神经网络&#xff08;Artificial Neural Networks&#xff0c;ANN&#xff09;的一种扩展。它们通过模仿人脑的工作原理来处理数据和创建模式&#xff0c;广泛应用于图像识别、语音识别、自然语…

安捷伦Agilent 85033E机械校准套件

181/2461/8938产品概述&#xff1a; 网络分析中的测量误差可分为两类:随机误差和系统误差。随机误差和系统误差都是矢量。随机误差是不可重复的测量变化&#xff0c;通常是不可预测的。系统误差是测试设置中可重复的测量变化。 系统误差包括阻抗不匹配、系统频率响应和测试设…

位运算详解教程

位运算的概述 数据以二进制的形式存储在设备中。即0&#xff0c;1两种状态。 &与运算&#xff1a;只有当两位都为1的情况下才为1&#xff0c;其余情况全是0. |或运算&#xff1a;两个位上都为0时&#xff0c;结果才为0 ^异或运算&#xff1a;两个位相同为0.相异为1 ~取…

11、Spring CLI中Action指南

动作指南 这个页面描述了你可以使用的动作: 生成(Generate) generate 动作用于生成文件。它需要一个 to 键来指定目标路径。路径是相对于执行用户定义命令的地方。如果文件已存在,则不会被覆盖。 文件的内容是使用 text 键定义的。 下面的示例展示了一个简单的生成动作…

javaSwing超级玛丽游戏

一、摘要 摘要 近年来&#xff0c;Java作为一种新的编程语言&#xff0c;以其简单性、可移植性和平台无关性等优点&#xff0c;得到了广泛地应用。J2SE称为Java标准版或Java标准平台。J2SE提供了标准的SDK开发平台。利用该平台可以开发Java桌面应用程序和低端的服务器应用程序…

在线测评系统

Hydrooj nodejs版 HustOJ php版 QDUOJ python版 QDUOJ https://gitcode.com/QingdaoU/OnlineJudge/tree/master HustOJ hustoj: hustoj -- 流行的OJ系统&#xff0c;跨平台、易安装、有题库 Hydrooj https://hydro.js.org/docs/

人工智能聊天机器人与大型语言模型 (LLM):哪个适合您的业务?

简介&#xff1a;欢迎来到未来 您可能听说过人工智能聊天机器人和大型语言模型 (LLM)&#xff0c;对吧&#xff1f; 这些技术奇迹正在重塑企业的沟通和运营方式。 但是&#xff0c;这是一个价值百万美元的问题&#xff1a;哪一个适合您的业务&#xff1f; 让我们深入了解一下&…

【C++航海王:追寻罗杰的编程之路】queue

目录 1 -> queue的介绍和使用 1.1 -> queue的介绍 1.2 -> queue的使用 1.3 -> queue的模拟实现 1 -> queue的介绍和使用 1.1 -> queue的介绍 queue的文档介绍 1. 队列是一种容器适配器&#xff0c;专门用于在FIFO(先进先出)上下文中操作&#xff0c;其…

【C++】每日一题 137 只出现一次的数字

给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 #include <vector>int singleNumber(std::vecto…

力扣刷题31-33(力扣 0024/0070/0053)

今日题目&#xff1a; 24. 两两交换链表中的节点 题目&#xff1a;给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09; 思路&…

Unity DOTS系列之托管/非托管Component的区别与性能分析

最近DOTS发布了正式的版本, 我们来分享一下DOTS里面托管与非托管Component的区别与性能分析&#xff0c;方便大家上手学习掌握Unity DOTS开发。托管与非托管的区别在于是不是基于自动垃圾回收的。托管是由垃圾回收器来负责自动回收&#xff0c;非托管需要我们手动来做相关内存管…

Linux离线安装Docker-Oracle_11g

拉取oracle11g镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g创建11g容器 docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g查看容器是否创建成功 docker ps -a导出oracle容器&#xff0c;查看…

深入探索MySQL高阶查询语句的艺术与实践

目录 引言 一、条件查询 &#xff08;一&#xff09;比较运算符查询 1.使用匹配符号查询 2.范围查找 &#xff08;二&#xff09;逻辑运算符 二、关键字排序 三、分组与聚合函数 四、限制查询 五、别名 &#xff08;一&#xff09;设置列别名 &#xff08;二&#x…

从零学算法212

212.给定一个 m x n 二维字符网格 board 和一个单词&#xff08;字符串&#xff09;列表 words&#xff0c; 返回所有二维网格上的单词 。 单词必须按照字母顺序&#xff0c;通过 相邻的单元格 内的字母构成&#xff0c;其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同…

@JsonProperty作用

jackson的maven依赖 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.5.3</version> </dependency>JsonProperty 此注解用于属性上&#xff0c;作用是把该属…

二叉树|530.二叉搜索树的最小绝对差

力扣题目链接 class Solution { private: vector<int> vec; void traversal(TreeNode* root) {if (root NULL) return;traversal(root->left);vec.push_back(root->val); // 将二叉搜索树转换为有序数组traversal(root->right); } public:int getMinimumDiffe…

Mac vue3 使用可选链操作符 ?. 及空值合并操作符 ??编译报错

项目场景&#xff1a; uniapp使用vue3开发&#xff0c;引入uview-plus版本&#xff0c;无法编译通过&#xff08;无法使用可选链操作符 ?. &#xff09; 开发环境&#xff1a; 产品分类&#xff1a; uniapp/App P…