美文网首页
消息队列

消息队列

作者: 小码弟 | 来源:发表于2018-12-05 20:43 被阅读0次

一、消息模型

  1. 点对点模型:消息生产者向队列中发送一个消息后,只能被一个消费者消费


    未命名文件.png
  2. 发布/订阅:生产者发送一个消息,多个消费者从该频道订阅并消费


    未命名文件-2.png

    发布订阅模式使用异步,生产者发送完消息后不等待返回,继续工作。

  • 与观察者模式的区别:观察者模式使用同步工作,生产者和消费者不透明,也就是生产者直到自己产生的消息被哪个消费者消费了。而发布订阅异步工作,生产者只管生产消息,往频道里一扔就不管了,不关心被消费者消费掉了。
    二、应用场景
    1、异步处理:比如用户注册时发送激活邮件,把发送邮件和验证的工作给另一个程序处理,主程序发一个消息给邮件程序,立即返回继续处理后序逻辑。当然,这种应用需要系统允许异步处理。
    2、流量削峰:高并发情况下,将请求放到消息队列里,由服务器根据负载适时提取消息处理。
    3、应用解耦:各模块间不直接调用,通过消息队列选择性订阅消息,完成调用。
    三、可靠性
  1. 发送端一定能将消息放进队列
    实现方法:在本地建表,存储信息与业务数据,业务端的事务提交之后将消息发送到队列,如果成功则删除表中的数据,否则重传
  2. 接收端一定能从队列中收到消息
    实现方法:保证消息具有唯一编号,并用日志表记录已经消费的消息编号。

相关文章

  • 消息队列:消息队列简介

    1. 什么是消息队列 消息队列(message queue),是一种应用程序的通信方法; 消息队列是 生产者-消费...

  • 消息中间件

    消息中间件,也可以叫做中央消息队列或者是消息队列(区别于本地消息队列,本地消息队列指的是 JVM 内实现的队列实现...

  • 消息队列对比

    引用: 常用消息队列对比消息队列及常见消息队列介绍 常用消息队列 1. RabbitMQ 用erlang语言开发的...

  • 消息队列应用-使用异步队列就解耦了吗

    消息队列作用一文介绍了为什么要使用消息队列。我们再来讨论下如何有效使用消息队列。 消息队列模式 目前主流消息队列主...

  • Kafka常见问题解决

    概要:我们使用消息队列,就需要知道为什么要用消息队列,什么场景需要用消息队列,使用消息队列能带来哪些好处和消息队列...

  • 进程间通信(下)

    消息队列 在UNP第二卷中详细介绍了两种消息队列:Posix消息队列和System V消息队列。这两种消息队列很相...

  • APUE读书笔记-15进程内部通信(6)

    7、消息队列 消息队列是存放在内核中的消息的链表,通过消息队列标识进行标记。我们把消息队列称为队列,把它的标识称为...

  • java消息机制

    1.什么是消息队列? 1.消息队列是一个队列,先进先出,你无法读取消息队列中间的消息,只能按照顺序,从消息队列的头...

  • springboot项目架构(4)activemq、rabbit

    消息队列实现 支持的消息队列 ActiveMq RabbitMq RocketMq Kafka 各个队列实现队列与...

  • 进程间通信(7)-IPC通信之消息队列

    一、消息队列 消息队列是一种链式队列。 Msqid_ds:维护消息队列的结构体,队列的第一个消息指针msg_fir...

网友评论

      本文标题:消息队列

      本文链接:https://www.haomeiwen.com/subject/hztgcqtx.html