Spring Boot 学习笔记——消息,任务

一、消息

1、介绍

使用消息服务中间件可以提升异步通信,解耦能力和进行流量削峰。

消息服务中有两个概念消息代理目的地。消息的发送者将消息发送至消息代理服务器,由消息代理服务器进行消息管理,使消息能够到达正确的目的地。

两种形式的目的地
1、队列:点对点通信,一个消息只能被一个接收者接收
2、主题:发布/订阅消息通信,一个消息发布可以被多个订阅者接收

两个消息服务的规范:
1、JMS:JAVA消息服务,ActiveMQ、HornetMQ由JMS实现
2、AMQP:高级消息队列协议,RabbitMQ由AMQP实现

2、RabbitMQ

介绍

Message消息,由消息头和消息体组成
Publisher消息的发送方
Exchange交换器,接收到消息后分配给对应的队列。有四种类型:direct根据路由key一对一分配,fanout广播每条消息,topic根据路由key模糊查询分配消息,header
Queue消息队列,存储消息
Binding将队列与交换器进行绑定
Connection网络连接,如TCP连接
Channel信道,采用多路复用的方式
Consumer消息从消息队列中取出送达的客户端

消息由Publisher 产出,送到消息代理服务器中的Exchange,根据消息中的路由key送到该Exchange对应Binding的Queue中去。取出信息时,通过TCP连接,在Channel中采用多路复用的方式送达Consumer

topic方式的模糊查询:* 匹配一个单词,# 匹配0个或多个单词

整合RabbitMQ

1、可以直接使用网页 host:port 访问RabbitMQ进行操作
2、使用编码的方式

  • 导入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
  • 配置连接
spring:
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest
  • 使用到两个类RabbitTemplateAmqpAdmin
    RabbitTemplate:发送与接收消息
    AmqpAdmin:管理组件,创建Exchange,Queue 和 Binding等

使用RabbitTemplate时涉及到了消息的序列化操作,因为默认采用java的序列化方法所以我们需要自定义一个MessageConverter

  • RabbitMQ的消息监听器,消息队列中一有消息则接收消息
    主程序上用 @EnableRabbit 开启注解的功能
    @RabbitListener(queue = “xx”)选择监听哪个队列

2、任务

异步任务

发送邮件或者处理数据的同时不阻塞线程

  • 使用 @EnableAsync 开启注解功能
  • 使用 @Async 标记方法

定时任务

定时执行,可用于日志的分析等

  • 使用 @EnableScheduling 开启注解功能
  • 使用 @Scheduled(cron=“xx”) 标记方法,cron表达式说明执行的时间

邮件任务

  • 导入依赖
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
  • 配置 application.properties
## 发件人邮箱
spring.mail.username=xxxxxx@qq.com
## 生成的授权码
spring.mail.password=xxxxxx
## QQ的SMIP地址
spring.mail.host=smtp.qq.com
## 配置安全连接
spring.mail.properties.mail.smtp.ssl.enable=true
  • 自动注入 JavaMailSenderImpl,新建消息对象SimpleMailMessageMimeMessage操作消息内容,发送对象等。由JavaMailSenderImpl对象发送
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值