ActiveMQ

MQ 消息中间件 1. 理解消息中间件和JMS 2. 点对点和发布订阅模式 3. 掌握springJms 4. 完成商品导入索引库和移除索引库。 5. 完成生成商品详情页和删除商品详情页。

  1. 怎么使用消息中间件? 1. 为什么用消息中间件? 因为系统模块比较多,其中运行商后台的调用关系最多,他用到了商家服务、广告内容服务、搜索服务等,
    这种模块之间的依赖叫做耦合,耦合越多,之后的维护工作就越困难,那么为了改善模块之间的调用关系,减少模块之间的耦合,就采用了-消息中间件的方法。
    2. 什么是消息中间件? 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流。并基于数据通信来进行分布式系统的集成。
    对于消息中间件来说,常见的角色大致有:生产者、消费者。 常见的消息中间件产品有ActiveMQ\、RabbitMQ、我们使用的是Active MQ。
    3. 在项目中的具体实现? 因为未引入消息中间件的时候,运行商后台不仅同时和商家、广告服务之间有调用,还和搜索服务、页面生成服务有关联,
    我们通过引用了MQ ,使得 运营商系统与搜索、页面生成服务解除了耦合,通过 MQ来进行之间的调用。

  2. JMS 介绍。 1. 什么是JMS“? a. JMS是关于面向消息中间件的技术规范。其中消息是JMS中的一种类型对象,有报头和消息主体组成。
    b. JMS 定义了五种不同的消息正文格式,包括: . TextMessage–一个字符串对象
    · MapMessage–一套名称-值对
    · ObjectMessage–一个序列化的 Java 对象
    · BytesMessage–一个字节的数据流
    · StreamMessage – Java 原始值的数据流
    c. JMS 的两种传递类型: 点对点PTP
    发布/定于模式

  3. spring 整合JMS : 1 整生产者. a. 导入依赖。 b. 创建applicationContext-jms-producer.xml c. 创建消息生产者类。
    2. 然后弄消费者。a. 导依赖 b. applicationCOntext-jms-consumer-queue.xml c. 编写监听类 发布订阅模式相同流程。

  4. 消息队列的应用场景:
    1.异步处理:比如用户注册后,用户点击注册之后注册信息写入数据库,然后发注册邮件和注册短信。传统的的做法是按照顺序,
    先进行发邮件再发短信,最后返回给客户端,响应的时间比较长。而使用消息队列之后,注册信息写入s数据库之后,
    不再是顺序的发送信息,而是写入消息队列,然后消息队列异步处理同时进行发送邮件和发送短信。
    2. 应用解耦:用户下单后,订单系统需要通知库存系统。传统的做法是订单系统调用库存系统的接口。
    这种做法的缺点:1. 如果库存系统无法访问,则订单减库存的操作将失败,从而导致订单失败。
    2. 订单系统与库存系统耦合。
    3. 流量肖锋:一般用秒杀或团抢活动中使用。因为秒杀活动,流量过大,导致流量暴增。
    为解决这个问题,一般需要在应用前端加入消息队列,可以控制活动的人数。
    用户的请求,服务器接受后,首先写入消息队列,如果消息队列的队列长度超出了最大数量,则直接抛出用户请求,或者跳转到错误的页面。

  5. ActiveMQ:
    如果消息发送失败怎么办:
    Activemq 有两种通信方式,点到点形式和发布订阅模式。
    如果是点到点模式的话,如果消息发送不成功此 消息默认会保存到 activemq 服务端知道有消费者将其消费,所以此时消息是不会丢失的。
    用于对如果是发布订阅模式的通信方式,默认情况下只通知一次,如果接收不到此消息就没有了。这种场景只适消息送达率要求不高的情况。
    如果要求消息必须送达不可以丢失的话,需要配置持久订阅。
    每个订阅端定义一个 id,在订阅是向 activemq 注册。
    发布消息和接收消息时需要配置发送模式为持久化。此时 如果客户端接收不到消息,消息会持久化到服务端,直到客户端正常接收后为止。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值