ActiveMQ

消息队列

1.什么是消息队列?它解决了什么问题?(可以用来干什么?)具体怎么解决的?有什么好处?带来了什么问题?
2.JMS和AMQP每个是什么?它们有什么模式和数据类型?区别是什么?
3.ActiveMQ是什么?用来干什么?里面有什么模式?

1.消息队列就是一个存储消息生产者生产海量消息的地方,然后消息消费者就可以异步地从消息队列中进行消费。
它主要解决了三个问题:异步(减少用户相应时间,提高用户体验),削峰(促销活动时,用来存储海量请求,然后慢慢处理积压在队列里的请求),解耦(A调用B,C,D后面如果需要修改耦合度非常高,所以通过发布和订阅的方式可以解耦)
异步是当用户要对数据库操作的时候,比如它们要修改一个个人的资料,其实没有必要收到请求后数据库执行完后再给用户返回成功,而且这个也是非常耗时的。通过消息队列的话,很多用户把该修改操作作为消息发送到消息队列中,然后服务器之间给用户返回修改成功。但此时可能并没有真正的都改过来,而是数据库从消息队列中拿消息进行消费,这个过程是异步进行的。
这样的话,就可以减少用户相应时间,用户体验很好

削峰是当有促销活动时,很大请求会对数据库造成很大的负担。严重的会导致数据库崩溃。所以使用消息队列来保存这些海量的请求,然后数据库可以在它能承受的范围内慢慢来消费这些请求。这样就可以降低数据库负担

解耦是比如A系统要调用B C D系统里的服务,这样就会产生耦合,比如需求改变后,不再调用D的服务,又需要新添加调用E的服务,这样耦合是非常麻烦的
当使用消息队列后,A系统不用再管它要调用谁的服务,它只需要把自己调用的请求发送到消息队列中,B C D它们自己根据自己的需求来进行消息的订阅与消费,不管是新添加使用还是取消使用都非常方便。减少了耦合度。

但消息队列的引入也带来了问题。1.增加了系统的复杂性 2.消息队列自身的可靠性如果保证不了,一旦挂掉,就是非常致命的。还比如它无法完成精准和正确的消息消费。

2.JMS是java message service,是消息传递的api,可以使消息进行异步的传递。
JMS有5种数据类型,Stream,Map,Text,Object,Bytes分别是java中的流类型,键值对类型,字符串类型,java对象类型,字节类型。
JMS有两种模式:
1.点对点模式
点对点模式就是一个消息生产者,生成消息放到消息队列中。然后一个消息消费者,从该消息队列里取消息进行消费。(一个消息只能被一个消费者消费,队列里的消息保留到直到被消费或者超时)。
2.发布订阅模式
消息生产者生成一个topic的消息,只有订阅这个topic的消费者才能够收到这个消息。生产者会把这个消息广播给所有订阅该topic的消费者。

JMS是比较经典的关于信息传递的标准,它只能用于java平台。

AMQP 是 advanced message queue protocol,它是一个跨平台跨语言的消息传递协议,它兼容JMS
它有5种模式,但是和JMS的模式差不多。它使用的数据类型只有字节类型(二进制)

3.ActiveMQ是基于JMS的一个消息队列。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值