springboot学习3

接上一篇:《springboot学习2

6. 任务

Quartz:

工作(job)——用于定义具体执行的工作;工作明细(jobDetail)——用于描述定时工作相关的信息;

触发器(trigger)——用于描述触发工作的规则,通常使用cron表达式定义调度规则;

调度器(scheduler):描述了工作明细和触发器之间的对应关系。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

定义具体要执行的任务,继承QuartzJobBean

public class MyQuartz  extends  QuartzJobBean{
    @Override
    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
        System.out.println("myquartz is running");
    }
}

定义工作明细与触发器,并绑定对应的关系

Configuration
public class QuartzConfig {

    @Bean
    public JobDetail printJobDetail(){
        // 绑定具体的工作
      return JobBuilder.newJob(MyQuartz.class).storeDurably().build();
    }

    @Bean
    public Trigger printJobTrigger(){
        ScheduleBuilder schedule = CronScheduleBuilder.cronSchedule("0/15 * * * * ?");
        return TriggerBuilder.newTrigger().forJob(printJobDetail()).withSchedule(schedule).build();
    }
}

Task:

@SpringBootApplication
@EnableScheduling
public class Application {}
@Component
public class MyBean {

    @Scheduled(cron = "0/1 * * * * ?")
    public void print(){
        System.out.println("print");
    }
}

也可以在application.yml里面进行配置。

 7. javamail

SMTP(simple mail transfer protocol):简单邮件传输协议,用来发送电子邮件的协议。

POP3(Post office protocol -version 3):用于接收电子邮件的标准协议。(单向)

IMAP(Internet mail access protocol):互联网消息协议,是POP3的替代协议。(双向绑定)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

其中password不是邮箱的登录密码,是开启之后获得的授权码

@Autowired
    private JavaMailSender javaMailSender;

    // 发送人
    private String from  = "******@qq.com";
    // 接收人
    private String to = "******@qq.com";
    // 标题
    private String subject = "测试邮件";
    // 正文
    private String context = "测试邮件正文内容";
    
    @Override
    public void sendMail() {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from+"(小黄黄)");
        message.setTo(to);
        message.setSubject(subject);
        message.setText(context);
        javaMailSender.send(message);
    }

 以上为简单邮件。复杂邮件使用MimeMessage

@Autowired
    private JavaMailSender javaMailSender;

    // 发送人
    private String from  = "***@qq.com";
    // 接收人
    private String to = "***@qq.com";
    // 标题
    private String subject = "测试邮件";
    // 正文
    private String context = "<img src='***'/><a href='http://www.baidu.com'>测试邮件正文内容</a>";

    File file = new File("D:\\**\\**\\***.rar");
    File file2 = new File("D:\\2345Downloads\\fdb6dc860fd5db3a!400x400_big.jpg");

    @Override
    public void sendMail() {
        try{
            MimeMessage message = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message,true);
            helper.setFrom(from+"(小黄黄)");
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(context,true);
            helper.addAttachment(file.getName(),file);
            helper.addAttachment("微信头像.jpg",file2);

            javaMailSender.send(message);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

消息:

activeMQ:

下载:ActiveMQ

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

RabbitMq:基于Erlang语言编写,需要首先安装Erlang

Erlang下载地址:https://www.erlang.org/downloads 一键安装,需要依赖windows组件,重启。配置ERLANG_HOME和PATH。

RabbitMQ下载地址: https://rabbitmq.com/install-windows.html,一键安装,安装完重启。

命令:或者直接进入服务开启关闭。

服务管理可视化(插件形式)

与Springboot整合

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-amqp</artifactId>
 </dependency>
# application.yml
spring:
   rabbitmq:
     host: localhost
     port: 5672

 定义交换机

第二种:topic模式

 with里面的匹配规则:

 RocketMQ:

下载地址:Release Notes - Apache RocketMQ - Version 4.9.3 - Apache RocketMQ

安装,解压缩。默认服务端口号:9876

环境变量配置:ROCKETMQ_HOME,PATH,NAMESRV_ADDR(建议):127.0.0.1:9876

 启动命名服务器:点击mqnamesrv.cmd和mqbroker.cmd

例子可在rocketmq/lib/rocketmq-example.4.9.x.jar里面、可进入bin目录cmd.使用

tools org.apache.rocketmq.example.quickstart.producer.class 测试服务器是否正常。

与springboot整合:

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.2.1</version>
</dependency>
rocketmq:
    name-server: localhost:9876
    producer:
        group: group_rocketmq

 

 kafka

 下载地址:Apache Kafka 3.x的有点问题,下载2.8.1版本的,解压缩。进入到\bin\windows目录,进入cmd界面。

首先启动zookeeper: kafka_2.13-2.8.1\bin\windows>zookeeper-server-start.bat ../../config/zookeeper.properties

接下来启动kafka服务器:kafka_2.13-2.8.1\bin\windows>kafka-server-start.bat ../../config/server.properties

kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic itheima
》》Created topic itheima.

kafka-topics.bat --zookeeper 127.0.0.1:2181 --list
》》itheima

 测试生产者功能和消费者功能需要再开两个cmd窗口

kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic itheima --from-beginning
》》此处输入job

kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic itheima --from-beginning
》》此处接收job

springboot整合kafka

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-kafka</artifactId>
</dependency>
spring:
  kafka:
    bootstrap-servers: localhost:9082
    consumer:
      group-id: order

监控

意义:监控服务状态是否宕机;监控服务运行指标(内存、虚拟机、线程、请求等);监控日志;管理服务(服务下线)

实施方式:显示监控信息的服务器,用于获取服务信息,并显示对应的信息;运行的服务,启动时主动上报,告知监控服务器自己需要受到监控。

可视化监控平台:springboot admin.开源社区项目,用于管理和监控Springboot应用程序,客户端注册到服务端后,通过HTTP请求方式,服务端定期从客户端获取对应的信息,并通过UI界面展示对应的信息。

与springboot整合(注意springboot admin与springboot版本一致)

①新建server模块

 或者直接添加pom依赖:

<dependency>
     <groupId>de.codecentric</groupId>
     <artifactId>spring-boot-admin-starter-server</artifactId>
     <version>2.6.3</version>
</dependency>
server:
  port: 8080
再加上springboot web依赖
@SpringBootApplication
@EnableAdminServer
public class Application {}

②新建client模块,再加上springboot web依赖

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.6.3</version>
</dependency>
spring:
  boot:
    admin:
      client:
        url: http://localhost:8080
management:
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        include: "*"

界面大致如下:

监控原理

Actuator提供了Springboot生产就绪功能,通过断电的配置与访问,获取端点信息;端点描述了一组监控信息,springboot提供了多个内置端点,也可以根据需要自定义端点信息;访问当前应用所有端点信息:/actuator;访问端点详细信息:/actuator/端点名称

主要用的端点名称:loggers(显示和修改应用程序的日志记录器的配置)、metrics(显示当前应用程序的指标度量信息)、health(显示应用程序健康信息)

比如:include: "*" => include: health,info

例如改成下面的:

spring:
  boot:
    admin:
      client:
        url: http://localhost:8080
management:
  endpoint:
    health:   # 端点名称 必须有的
      show-details: always
    info:    # 端点名称
      enabled: false
  endpoints:
    web:
      exposure:
        include: "*"
    enabled-by-default: true

 其他的监控方式:cmd->jconsole  (jms方式,基本上端点功能都是默认开放的)

自定义端点配置

info端点:方式有两种

新建actuator包,新建类

 

 health端点:

同上。

metric端点:

 自定义端点

原理篇

bean的加载方式

(一)、xml方式声明bean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值