java消息中间件
消息中间件介绍
消息队列
什么是消息队列
消息队列是消息中间件的一种实现方式。
什么是消息中间件?
将消息中间件需要理解一下什么是消息和中间件?
- 消息
消息是指软件对象之间进行交互作用和通讯利用的一种方式。

- 中间件
百度百科的介绍:
中间件(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消息中间件的更多相关文章
- Java消息中间件入门笔记 - ActiveMQ篇
入门 消息中间件带来的好处: 1)解耦:系统解耦 2)异步:异步执行 3)横向扩展 4)安全可靠 5)顺序保证 栗子: 通过服务调用让其它系统感知事件发生 系统之间高耦合 程序执行效率低 通过消息中间 ...
- java消息中间件之ActiveMQ初识
目录 消息中间件简介 解耦合和异步 可靠性和高效性 JMS P2P Pub/Sub AMQP JMS和AMQP对比 常见消息中间件 ActiveMQ RabbitMQ Kafka 综合比较 标签(空格 ...
- Java消息中间件--初级篇
一. 为什么使用消息中间件? 假设用户登录系统 传统方式 用户登录 调用短息服务 积分服务 日志服务等各种服务 如果短息服务出现问题就无法发送短信而且用户登录成功必须所有调用全部完成返回 ...
- 以ActiveMQ为例JAVA消息中间件学习【1】
前言 在慢慢的接触大型的javaweb的项目就会接触到很多的中间件系统. 其中消息中间件在很多场景下会被运用. 这里主要就对最近所学习到的消息中间件知识做一个笔记,为以后的实际运用打下一个良好的基础. ...
- day4 java消息中间件服务
PS: 讲个故事,老王要给他的两个女儿讲故事,他要一个一个讲很费劲,后来他使用了微信公众号,让订阅微信公众号的人关注就减轻了负担. PS: 传统的如果一个用户进行登录,会调用分多的服务,如果没有消息中 ...
- java消息中间件的使用与简介
一.为什么要使用消息中间件 消息中间件就是可以省去繁琐的步骤,直达目的,怎么讲呢,就是比如你想很多人,知道你的动态,而知道的人可能手机没电,可能手机信号不好,可能手机不在服务区,或者看的人比较忙,看的 ...
- java消息中间件入门
消息中间件来解耦服务调用 比如1个登录系统,登录的话需要调用很多系统的其他服务,如果中间调用失败,可能会导致登录信息一致无法返回,同时也增加了系统的耦合度.而用消息中间件的话,则是不发送服务到其他系统 ...
- Java消息中间件----ActiveMQ入门①
一 首先到ActiveMQ下载安装包 Active官网地址http://activemq.apache.org/activemq-5150-release.html 如图所示,有两个下载的链接,我们下 ...
- 以ActiveMQ为例JAVA消息中间件学习【4】——消息中间件实际应用场景
前言 当前真正学习消息中间件,当前已经走到了,可以简单的使用,网上有很多那种复杂的高可用的架构,但是那些都是对于一些比较大型的项目来说的. 对于一些小型的项目可能用不到那么大的架构,于是我们需要从最简 ...
- 以ActiveMQ为例JAVA消息中间件学习【3】——SpringBoot中使用ActiveMQ
前言 首先我们在java环境中使用了ActiveMQ,然后我们又在Spring中使用了ActiveMQ 本来这样已经可以了,但是最近SpringBoot也来了.所以在其中也需要使用试试. 可以提前透露 ...
随机推荐
- java输入输出--I/O操作基础知识学习
一.java的I/O流 1. 输入流(字节流和字符流,字节流操作的数据单元是8位的字节,字符流操作的是16位的字符)(InputStream 和Reader作为基类) 2.输出流(字节流和字符流,字节 ...
- java中的全局变量与静态变量的区别与联系?有时候为什么专门定义静态变量。(标题党~~)
static代表“每个类一个”而不是“每个对象一个”.即静态变量是类的所有对象共有的. 1 static JFrame f; static MyDrawPanel ml; 整个应用程序如下: 定义在p ...
- 关于 block的一些浅识
block的定义:“带自动变量的匿名函数” (一)写法: ^ void (int iAge){ NSLog(@"%d", iAge);}; 和C函数写法区别在于: 1) :以插入符 ...
- Pig Latin程序设计1
Pig是一个大规模数据分析平台.Pig的基础结构层包括一个产生MapReduce程序的编译器.在编译器中,大规模并行执行依据存在.Pig的语言包括一个叫Pig Latin的文本语言,此语言有如下特性: ...
- HDU 5038 Grade (水题,坑题)
题意:给 n 个数,输出众数,但是如果所有的频率都相同但数不同输出 Bad Mushroom. 析:直接记录个数直接暴力就,就是要注意只有一种频率的时候. 代码如下: #pragma comment( ...
- 序列化+fastjson和java各种数据对象相互转化
序列化的定义 序列化就是一种用来处理对象流的机制 所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间. 序列化是将对象转换为容易传输的格式的过程 例 ...
- 《Effective Java》第10章 发并
第66条:同步访问共享的可变数据 Java语言规范保证读或者写一个变量是原子的(atomic ) ,除非这个变量的类型为long或者double. [java中long和double类型操作的非原子性 ...
- HttpGet和HttpPost处理重定向的区别
get方法默认会处理302的重定向,response获取到的页面其实是重定向以后的页面,通过response.getStatusLine(),取到的值是200. 通过设置可以用post方法去请求或者把 ...
- MVC小记备忘
1,页面用<dl><dt><dd>和Bootstrap的"dl-horizontal"类布局页面,使每一个属性名和属性值占一行 <dl c ...
- 分区表分区字段的update操作
默认情况下,oracle的分区表对于分区字段是不允许进行update操作的,如果有对分区字段行进update,就会报错——ORA-14402: 更新分区关键字列将导致分区的更改.但是可以通过打开表的r ...