消息服务中间件知识

时间:2021-05-10 04:13:16

场景:

1.异步处理

消息服务中间件知识

  注册信息写入数据库——写入消息队列后直接返回 注册成功

  邮件和短信再发送

  节省了用户收到注册成功提示的时间。
2.应用解耦

消息服务中间件知识

  两种 系统单独抽取出来

  只要消息队列中有内容,库存系统就收到消息进行计算。

3.流量削峰

消息服务中间件知识

 

  秒杀时, 设置消息队列最大上限人数

  一旦达到上限关闭,直接返回秒杀失败,节省等待时间。

 

知识点:


消息代理:消息中间件的服务器

  • 目的地:队列(queue):点对点消息通信(point-to-point)
  • 主题(topic):发布(publish)/订阅(subscribe)消息通信

 

两种模式:

1.点对点:

   A——消息队列(queue)——B/C/D  
   发送者唯一,B,C,D需主动取
   消息一旦被B取出后 消息删除 ,C,D无法取
2.发布订阅:
   A——消息主题(topic)——B/C/D
   B,C,D监听
   A的消息到达topic时。
   B,C,D同时收到消息


消息代理规范:
JMS(Java Message Service)JAVA消息服务:
ActiveMQ、HornetMQ是JMS实现

AMQP (Advanced Message Queuing Protocol)高级消息队列协议 可以兼容JMS
RabbitMQ是AMQP的实现

 

消息服务中间件知识

Spring支持:

  • spring-jms提供了对JMS的支持
  • spring-rabbit提供了对AMQP的支持
  • 需要ConnectionFactory的实现来连接消息代理
  • 提供JmsTemplate、RabbitTemplate来发送消息
  • @JmsListener(JMS)、@RabbitListener(AMQP)注解在方法上监听消息代理发布的消息
  • @EnableJms、@EnableRabbit开启支持

 

Spring Boot自动配置:

  • JmsAutoConfiguration
  • RabbitAutoConfiguration