消息队列 java_java消息队列

归纳总结

JMS “ 一个中心,两种模式,三步实现”

1 以 消息服务器为中心

消息生产者 通过客户端发消息给消息服务器; 消息消费者通过消息服务器接收消息;

2 两种消息发送模型

两种消息发送模型规范:点对点、发布订阅 ;

3 实现方法分为三步

3.1、 统一消息服务器,建立连接Connections ;

3.2 、通过连接建立队列会话session;

3.3 、准备就绪后,执行 生产者 发消息和消费者 接消息(异步)。

优点解耦合、异步

也就是你有一个程序在产生内容然后入队(生产者)

另一个程序读取内容,内容出队(消费者)

消息队列典型应用场景:

比如你写日志,因为可能一个客户端有多个操作去写,又有很多个客户端,显然并发不能无穷大,于是你就需要把写日志的请求放入到消息队列里,在消费者那边依次把队列中产生的日志写到数据库里。

至于怎么实现消息队列,其实你本身一个普通的队列就行呀~看你需要什么附加功能而已。

消息队列有无数开源实现,一般没必要自己实现。zmq也好rabbitmq也好甚至redis也好,找一个合适的装上用就行

就好像rdbms/nosql一样

技术都是解决问题的,消息队列解决的是将突发大量请求转换为后端能承受的队列请求,比如你的服务器一秒能处理100个订单,但秒杀活动1秒进来1000个订单,持续10秒,在后端能力无法增加的情况下,你可以用消息队列将总共10000个请求压在队列里,后台consumer按原有能力处理,100秒后处理完所有请求(而不是直接宕机丢失订单数据)

所以说首先别自己实现消息队列(在你用过各种消息队列,还看过一两份源码之前),其次没有合适的需求别用消息队列

通俗的说,就是一个容器,你把消息丢进去,不需要立即处理。然后有个程序去从你的容器里面把消息一条条读出来处理。

消息队列,可以是activeMQ,kafka之类的,也可以是数据库的一张任务表。

个人觉得消息队列,主要有两个作用:

降低耦合

消息可以暂时存在在消息队列中,等待消息接收者根据自身的负载处理能力控制处理消息的处理速度,减小在大并发访问时候的压力。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值