消息中间件介绍

 

消息队列


什么是消息队列

消息队列是消息中间件的一种实现方式。

什么是消息中间件?

将消息中间件需要理解一下什么是消息和中间件?

  • 消息

消息是指软件对象之间进行交互作用和通讯利用的一种方式。

  • 中间件

百度百科的介绍:

​ 中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。

这介绍的我的不是很明白,下面我就讲解一下我的理解,什么是中间件:

首先,中间件 顾名思义 介于两者之间的一个技术:

​ 为了更好的理解中间件技术,我有了这样的一个设想的概念,如图:

​ 信息:这是一个抽象的个体,可以代表一个软件、计算机、或者一个系统等等。
联系:则是进行通信、相互操作等等的抽象

​ 中间件则是将 信息与信息之间的联系践行一种存储或者管理的技术,这就是中间件技术。

​ 根据其应用的不同,中间件分为:

​ 一类是底层中间件,用于支撑单个应用系统或解决一类问题,包括交易中间件(TPM)、应用服务器、消息中间件(MOM)、数据访问中间件(UDA),远程调用中间件(RPC)等等;

​ 另一类是高层中间件,更多的用于系统整合,包括企业应用集成中间件、工作流中间件、门户中间件等,他们通常会与多个应用系统打交道,在系统中层次较高,并大多基于前一类的底层中间件运行。

总结:消息中间件则是将软件与软件之间的交互方式进行存储和管理的一种技术,也可以看做是一种容器。

### 深入理解消息队列:

消息队列,是消息中间件的一种实现方式

下面是消息队列传递服务的模型:

消息队列的传递模型一共有两中形式:

  • 点对点(PTP)

即一个生产者和一个消费者一一对应;

点对点模型的特点:

1,每个消息只有一个消费者

2,发送者和接受者没有时间依赖

3,接受者确认消息接受和处理成功

  • 发布-订阅(Pub/Sub)

发布/ 订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进

行接收。

发布-订阅模型特点:

1,每个次消息可以有多个消费者

2,客户只有订阅后才能接收消息(只有建立订阅关系才可以接收消息 )

3,持久订阅和非持久订阅

  • 持久订阅

订阅关系建立后(关系保存在消息中间件中),不管消费者(也就是订阅者)是否在线消息都不会消失。

  • 非持久订阅

建立一种类似长连接关系式的订阅模式,订阅者为了接收消息必须保持一直连接的状态,如果断开连接则丢失消息。

消息队列的分类:

  • push(推消息模型)

消息生产者将消息发送给消息中间件,消息中间件又将消息推送给消费者。

  • pull(拉消息模型)

消费者请求 消息中间件接收消息,消费者从消息中间件拉取消息。

特点:

目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等 。

消息队列的应用案例:

1,用户注册

2,日志收集分析

3,数据复制

4,延迟消息发送和暂存

5,消息广播

java消息中间件的更多相关文章

  1. Java消息中间件入门笔记 - ActiveMQ篇

    入门 消息中间件带来的好处: 1)解耦:系统解耦 2)异步:异步执行 3)横向扩展 4)安全可靠 5)顺序保证 栗子: 通过服务调用让其它系统感知事件发生 系统之间高耦合 程序执行效率低 通过消息中间 ...

  2. java消息中间件之ActiveMQ初识

    目录 消息中间件简介 解耦合和异步 可靠性和高效性 JMS P2P Pub/Sub AMQP JMS和AMQP对比 常见消息中间件 ActiveMQ RabbitMQ Kafka 综合比较 标签(空格 ...

  3. Java消息中间件--初级篇

    一. 为什么使用消息中间件? 假设用户登录系统   传统方式 用户登录  调用短息服务   积分服务  日志服务等各种服务  如果短息服务出现问题就无法发送短信而且用户登录成功必须所有调用全部完成返回 ...

  4. 以ActiveMQ为例JAVA消息中间件学习【1】

    前言 在慢慢的接触大型的javaweb的项目就会接触到很多的中间件系统. 其中消息中间件在很多场景下会被运用. 这里主要就对最近所学习到的消息中间件知识做一个笔记,为以后的实际运用打下一个良好的基础. ...

  5. day4 java消息中间件服务

    PS: 讲个故事,老王要给他的两个女儿讲故事,他要一个一个讲很费劲,后来他使用了微信公众号,让订阅微信公众号的人关注就减轻了负担. PS: 传统的如果一个用户进行登录,会调用分多的服务,如果没有消息中 ...

  6. java消息中间件的使用与简介

    一.为什么要使用消息中间件 消息中间件就是可以省去繁琐的步骤,直达目的,怎么讲呢,就是比如你想很多人,知道你的动态,而知道的人可能手机没电,可能手机信号不好,可能手机不在服务区,或者看的人比较忙,看的 ...

  7. java消息中间件入门

    消息中间件来解耦服务调用 比如1个登录系统,登录的话需要调用很多系统的其他服务,如果中间调用失败,可能会导致登录信息一致无法返回,同时也增加了系统的耦合度.而用消息中间件的话,则是不发送服务到其他系统 ...

  8. Java消息中间件----ActiveMQ入门①

    一 首先到ActiveMQ下载安装包 Active官网地址http://activemq.apache.org/activemq-5150-release.html 如图所示,有两个下载的链接,我们下 ...

  9. 以ActiveMQ为例JAVA消息中间件学习【4】——消息中间件实际应用场景

    前言 当前真正学习消息中间件,当前已经走到了,可以简单的使用,网上有很多那种复杂的高可用的架构,但是那些都是对于一些比较大型的项目来说的. 对于一些小型的项目可能用不到那么大的架构,于是我们需要从最简 ...

  10. 以ActiveMQ为例JAVA消息中间件学习【3】——SpringBoot中使用ActiveMQ

    前言 首先我们在java环境中使用了ActiveMQ,然后我们又在Spring中使用了ActiveMQ 本来这样已经可以了,但是最近SpringBoot也来了.所以在其中也需要使用试试. 可以提前透露 ...

随机推荐

  1. ES02 变量、数组、对象、方法

    1 变量 1.1 变量的声明 利用var关键字来声明变量,例如: var a = 100; <!DOCTYPE html> <html> <head> <me ...

  2. Vbs 脚本编程简明教程之一

    —为什么要使用 Vbs ? 在 Windows 中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制.粘贴.改名.删除,也许你每天启动 计算机第一件 ...

  3. Damn Couples ZOJ - 3161

    传送门 题目大意 N个人,M组关系,每次选一种关系,如果两个人相邻,则任意删除其中一个,否则不变.问最坏情况下最多能剩多少人. 分析 为了留的人最多,我们可以先将原来不相邻的关系全部说完,这样我们只需 ...

  4. kaggle Cross-Validation

    The Cross-Validation Procedure In cross-validation, we run our modeling process on different subsets ...

  5. Altium designer14裁剪PCB的方法

    很多人都跟我反应说AD14不能定义板框大小,或者说是不知道怎么定义板框的大小, 确实AD14的操作和AD13或者是AD10的版本斗有一些差异, 其实对于熟悉AD的人来说自己玩两天,这些差异就不算什么了 ...

  6. SQL Server 2014 清理日志

    USE [master] GO ALTER DATABASE [TempTestDb02] SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE [Te ...

  7. 动态绑数据(GridView控件Header和ItemTemplate)

    想了解此篇文章,建议先预习一下<动态变更GridView控件列名>http://www.cnblogs.com/insus/p/3232057.html,因为多少有些关联.不管怎样,它能够 ...

  8. Django之request对象

    在view.py的函数中.我们的函数中第一个参数都是request.在request中有一些信息,比如正在加载这个页面的用户是谁,或者是用什么浏览器之类的.这对于我们网站的管理是很有用处的. requ ...

  9. XCode9: iPhone is busy: Preparing debugger support for iPhone

    这个好像是等一阵子就可以了 参考链接

  10. go语言入门教程百度网盘 mysql图形化操作与数据导入

    mysql图形化操作与数据导入 @author:Davie 版权所有:北京千锋互联科技有限公司 数据库存储技术 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.每个数据库都有一个 ...