activeMQ个人理解总结

原文地址

个人理解总结

activeMQ是什么?

  是Apache公司旗下的一个消息总线

ActiveMQ是一个开源兼容Java Message  Service  (JMS) 1.1面向消息的中件间. 来自Apache Software Foundation. ActiveMQ提供松耦合的应用程序架构. 

activeMQ能干什么?

  用来在服务与服务之间进行异步通信的

activeMQ优势

1.流量肖锋

2.任务异步处理

特点:可以解耦合

  (学习新技术的三要素:是什么?能干什么?有什么优势?)

 

 图1:

 

 

通信模式:

1.点对点(queue)

》一个消息只能被一个服务接收

》消息一旦被消费,就会消失

》如果没有被消费,就会一直等待,直到被消费

》多个服务监听同一个消费空间,先到先得

详解:这个特点的原理是这样的,在activeMQ

2.发布/订阅模式(topic)

   》一个消息可以被多个服务接收

  》订阅一个主题的消费者,只能消费自它订阅之后发布的消息。

  》消费端如果在生产端发送消息之后启动,是接收不到消息的,除非生产端对消息进行了持久化(例如广播,只有当时听到的人能听到信息)

 

  图2:

  

 

注:消息是被推送和拉取的(消息生产端和消费端),不是mq服务器去主动发送的

总:一些简单常用的应用场景

1.发送邮件

详解:

  最经典的就是当用户注册时,我们就需要用activeMQ来做为中间件,当用户注册后,我门把用户的邮箱号和验证码等信息通过activeMQ的生产端发送到activeMQ的消息队列中,而一旦消息队列中出现了数据,我们的邮件模块通过实时的监控activeMQ的消息队列就能通过消费端获取到这个数据,染回邮件模块就会自行的去对数据进行解析,给用户发送邮件

2.发送短信

详解:

  原理同发送邮件相同

3.同步索引库

详解:

  为了缓解数据库的压力,我们把经常被调用的数据放入索引库中,当有请求查询时,我们会先去查询索引库,如果索引库内有数据,那么我们就不用就数据库进行查询,这样就能大大的减轻服务器的压力,可是随之而来的一个问题是,假如我们服务器内的数据已经发生了改变,而浏览用户查询数据时,因为索引库中已经有数据了,那么这样一来数据库与索引库的数据就不一致了,那么怎么解决这个问题呢?我们想到了通过用activeMQ来监听数据库的操作来实现数据库与索引库的数据同步,当后台管理员或房产经纪人对数据库的数据进行了增删改的操作时,我们通过activeMQ监听到了数据的改变,获取到被修改的数据的id,然后在另一个服务模块中通过这个数据的id去数据库先查询一把,然后根据查询结果进行判断,再去做索引库的数据同步。打个比方,如果查询结果返回的是空,就说明商品已经被删除,那么我们就可以根据数据的id去把索引库中的数据也一并删除了。

4.同步静态页面

详解:

  此原理同上一个同步索引库是一个原理,目的都是为了减缓服务器的压力,我们经过数据分析发现,其实我们的一些商品详情页面的数据其实都是大同小异的,完全可以通过freemarker页面静态化的模块加上后台查询出的数据拼装成一个静态页面,而这些数据从哪来呢?我们经过讨论和研究,最后一致认为还是放在缓冲中比较好,这样一来就能大大的减轻了数据 库的压力,而另一个好处是,由于页面是纯静态页面,所以页面上的数据都是死数据,这样一来就不用像JSP动态页面那样需要和后台数据库有大量的数据交互,可以最大化的降低服务器的压力,其实这个技术已经有很多大型公司在使用了,比如淘宝,京东,网易等,我们要是细心一些就会发现,他们的页面其实就都是HTML格式的静态页面。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值