当前位置: 首页 > news >正文

消息中间件简介

Android消息推送怎么实现? - petercao - 博客园
http://www.cnblogs.com/bluestorm/p/5752626.html

 

MQ消息中间件技术 - 一名菜鸟架构师的心路历程 - 博客频道 - CSDN.NET
http://blog.csdn.net/apanious/article/details/51014396

 

我对消息中间件的理解 - - 博客频道 - CSDN.NET
http://blog.csdn.net/luckyzhoustar/article/details/50411500

 

 

专业术语定义: 

消息:两台计算机之间传送的数据单位,例如字符串、文本等

 消息队列:消息的容器,用于在消息传递的过程中保存消息的容器,充当消息源和目标之间的中间桥梁。队列的只要目的就在于提供路由保证消息的传递。

 消息队列网络:是指能够相互之间发送消息的一组计算机。网络中不同的计算机在消息处理过程中扮演者不同的角色,有的是发送者,有的是接受者。

 

对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)、Broker(中转角色),有这么几个主要的角色,那么消息中间件能为我们带来那些功能呢?

 1.Message Priority

 Producer把消息发送给Broker来存储,那么我们就可以再消息队列中对我们的消息来进行排序,实现不同的优先级。从而满足我们复杂的业务需求。

 2.Message Order

 消息排序,有的消息的处理是需要按照一定的顺序进行处理的,比如用户的创建订单、订单付款、订单完成。那么对于消费者也需要按照这个流程来消费,否则就没有意义了。

 3.Message Filter

 在消息对立中,也可以对我们的消息进行过滤,比如按照消息类型等条件来过滤

 4.Message Persistence

 消息的持久化,一般有以下几种方式

 (1)持久化到数据库,比如MySQL

 (2)持久哈到KV存储,比如Redis

 (3)文件形式持久化

 消息的持久化,防止了系统挂掉后,仍然能够从之前备份中恢复出来。

 5.Broker的Buffer满了怎么办?

 我们知道Broker是用来存储需要处理的消息,如果消息过多,导致Buffer满了怎么办?

 这时候就会采取一定的策略来丢弃已有的消息。

 6.事务的支持

 正如上面所谈到的订单的操作,因此消息中间件中也会提供对分布式事务的支持。

 7.定时消息

 在实际应用中,有时也会需要定时消费的功能,因此中间件中,也会对消息进行排序,然后实现定时发送或者消费消息的业务需求。

 8.消息重试

 考虑一下这个问题,如果消息消费失败后,怎么办,是等待处理这个消息呢?还是让消费者在此消费一次呢?通常情况下,采取后者的形式,因为大多数情况下,消费失败的原因在于该消息本身的原因,如果在此消费这个消息的话,还是会出现失败的情况,因此通常采取在此发送消息在此消费消息的方式。

 9.回溯消费

 什么是回溯消费呢?对于已经消费成功的消息,是不是在Broker中就丢弃该消息呢?显而易见是不可能的,因此需要中间件对该功能支持,支持已经消费的信息进行时间段内的存储,等待某一刻内该消息会被重新消费的可能。

 

MQ适用场景介绍

MQ消息队列是应运松偶合的概念而产生的,主要以队列和发布订阅为消息传输机制,以异步的方式将消息可靠的传输到消费端的一种基础产品。

它被广泛的应用与跨平台、跨系统的分布式系统之间,为它们提供高效可靠的异步传输机制。

       使用MQ将彼此协作的客户端和服务端连接起来,使他们可以交换消息。

相关文章:

  • 画像分析(4-1)智能搬迁和数据订阅
  • Bzoj4771 七彩树
  • Oracle 数据库备份脚本
  • C8051F340 USB Fn hacking
  • Android Studio 开始运行错误
  • 对象——浅识
  • Hadoop单机版快速搭建及测试
  • Android开源项目规范总结
  • PHP 使用 Redis
  • MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释)
  • Visual Studio 版本管理从TFS迁移到SVN
  • write-ahead-log与append-only-file的原理
  • sass中的三种循环
  • 【腾讯Bugly干货分享】经典随机Crash之一:线程安全
  • 基于Docker搭建Redis主从
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • Android开源项目规范总结
  • Angular6错误 Service: No provider for Renderer2
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • windows下mongoDB的环境配置
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 关于字符编码你应该知道的事情
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端技术周刊 2019-01-14:客户端存储
  • 如何解决微信端直接跳WAP端
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​用户画像从0到100的构建思路
  • $(selector).each()和$.each()的区别
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (2)MFC+openGL单文档框架glFrame
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (分布式缓存)Redis分片集群
  • (四)Controller接口控制器详解(三)
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • .NET MVC 验证码
  • .NET MVC之AOP
  • .NET 解决重复提交问题
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .net项目IIS、VS 附加进程调试
  • .so文件(linux系统)
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析
  • [bzoj1912]异象石(set)
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [codevs] 1029 遍历问题
  • [HeadFrist-HTMLCSS学习笔记][第一章Web语言:开始了解HTML]
  • [HTTP]HTTP协议的状态码