到底什么是消息队列?Java中如何实现消息队列?

发布于 2022-09-01 06:36:20 字数 102 浏览 23 评论 0

网上查了一些资料,感觉都是概念性的很空泛的东西,可是不知道到底是什么东西,如何在Java中实现并使用……

在此请教各位前辈到底什么是消息队列?Java中如何实现消息队列?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

顾铮苏瑾 2022-09-08 06:36:20

来个个人通俗的解释吧。
消息队列,顾名思义 首先是个队列。
队列的操作有入队出队

也就是你有一个程序在产生内容然后入队(生产者)
另一个程序读取内容,内容出队(消费者)

这是最最基本的概念。

我想你应该是缺乏一个使用场景。

当你不需要立即获得结果,但是并发量又不能无限大的时候,差不多就是你需要使用消息队列的时候。

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

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

遗失的美好 2022-09-08 06:36:20

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

就好像rdbms/nosql一样

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

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

空袭的梦i 2022-09-08 06:36:20

找本数据结构的书看看,队列是一种数据结构,内部是用数组或链表实现的,队列的特点是只能队头放入,队尾取出,即先入先出,具体应用看下生产者消费者

π浅易 2022-09-08 06:36:20

通俗的说,就是一个容器,你把消息丢进去,不需要立即处理。然后有个程序去从你的容器里面把消息一条条读出来处理。
消息队列,可以是activeMQ,kafka之类的,也可以是数据库的一张任务表。

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

  1. 降低耦合
  2. 消息可以暂时存在在消息队列中,等待消息接收者根据自身的负载处理能力控制处理消息的处理速度,减小在大并发访问时候的压力。
假装爱人 2022-09-08 06:36:20

也是初学消息队列,项目中需要到kafka。个人感觉可以简单的可以理解为存放消息的一个队列。然后根据不同的主题去通过队列进行消息的生产和消费。

剪不断理还乱 2022-09-08 06:36:20

你有一个程序在产生内容然后入队(生产者) 另一个程序读取内容,内容出队(消费者)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文