消息中间件介绍

 

消息队列


什么是消息队列

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

什么是消息中间件?

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

  • 消息

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

  • 中间件

百度百科的介绍:

​ 中间件(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. secureCrt常用命令

    一.常用命令: 1.ls 只列出文件名 (相当于dir,dir也可以使用) -A:列出所有文件,包含隐藏文件. -l:列表形式,包含文件的绝大部分属性. -R:递归显示. --help:此命令的帮助. ...

  2. 3-2 zk客户端连接关闭服务端,查看znode

    使用ZooKeeper官方提供的Client来连接.路径类似的结构. 连接到我们的门户HOST. quota属于zookeeper.quota是子节点,zookeeper是父节点.quota其实是一个 ...

  3. php中定义数组的方法

    1.PHP定义数组的格式 数组名=array(); 如:$aa=array();//这样就定义了一个数组, 之后给元素赋值: $aa[0]="9016"; $aa[1]=" ...

  4. p1627 [CQOI2009]中位数

    传送门 分析 https://www.luogu.org/blog/user43145/solution-p1627 代码 #include<iostream> #include<c ...

  5. mingw和libcurl

    想用curl来做rest的客户端.所以就研究下这方面东西. 1:安装mingw 为什么用mingw,小巧,必vs快,gcc了解的多一些, http://tdm-gcc.tdragon.net/down ...

  6. mono-3.0.2安装指南

     install-mono.sh.zip   mono-3.0.2安装指南.pdf   mod_mono.diff.zip mono-3.0.2安装指南 一见 2012/12/27 目录 1. 前言 ...

  7. CIFAR-10 模型

    Code: https://github.com/tensorflow/models/tree/master/official/resnet Data: http://www.cs.toronto.e ...

  8. [译]Javascript中的Ternary operator

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

  9. 从一个xaml文件获取xaml内容,遍历寻找对象

  10. 开启VS的JavaScript调试

    前提条件,设置我们的IE 去掉勾,即启用调试然后再JS代码片段中输入debugger.注意:如果IE开启了F12调试面板, VS是不会捕获JS代码片段中的debugger断点.