文章目录

  • 什么是中间件?
  • 什么是消息中间件?
  • 什么是Java消息服务(JMS)?
  • 什么是AMQP?
  • JMS与AMQP对比?
  • 几种常见消息中间件
    • ActiveMQ
    • RabbitMQ
    • Kafka
    • 综合评价

什么是中间件?

中间件(英语:Middleware),又译中间件、中介层,是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,在现代信息技术应用框架如Web服务、面向服务的体系结构等中应用比较广泛。

简单的来讲中间件就是非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件。如数据库、Apache的Tomcat,IBM公司的WebSphere,BEA公司的WebLogic应用服务器


什么是消息中间件?

关注于数据的发送和接受,利用高效可靠的异步消息传递机制继承分布式系统。


什么是Java消息服务(JMS)?

Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

Java消息服务的规范包括两种消息模式,点对点和发布者/订阅者。许多提供商支持这一通用框架因此,程序员可以在他们的分布式软件中实现面向消息的操作,这些操作将具有不同面向消息中间件产品的可移植性。
参考:https://zh.wikipedia.org/wiki/Java消息服务


什么是AMQP?

高级消息队列协议即Advanced Message Queuing Protocol(AMQP)是一个用于统一面向消息中间件实现的一套标准协议,其设计目标是对于消息的排序、路由(包括点对点和订阅-发布)、保持可靠性、保证安全性。

高级消息队列协议保证了由不同提供商发行的客户端之间的互操作性。与先前的中间件标准(如Java消息服务),在特定的API接口层面和实现行为进行了统一不同,高级消息队列协议关注于各种消息如何作为字节流进行传递。因此,使用了符合协议实现的任意应用程序之间可以保持对消息的创建、传递。

参考:https://zh.wikipedia.org/wiki/高级消息队列协议


JMS与AMQP对比?


几种常见消息中间件

ActiveMQ

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMSProvider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中仍扮演者特殊的地位.

由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。

ActiveMQ的特性:
支持Java消息服务 (JMS) 1.1 版本和J2EE 1.4 规范(持久化,XA消息,事务)
支持的编程语言包括:C、C++、C#、Delphi、Erlang、Adobe Flash、Haskell、Java、JavaScript、Perl、PHP、Pike、Python和Ruby
应用协议支持包括:OpenWire、REST、STOMP、WS-Notification、MQTT、XMPP以及AMQP
Spring Framework
集群 (Clustering)

RabbitMQ

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,用于在分布式系统中存储转发消息,在易用性,扩展性,高可用性等方面表现不俗.

RabbitMQ主要特性:
支持多种客户端: 如Python、Java、Ruby、PHP、C#、JavaScript、Go、Elixir、 Objective-C、Swift、
AMQP的完整实现(vhost、Exchange、Binding、Routing Key等)
事务支持/发布确认
消息持久化:从内存持久化消息到硬盘,再从硬盘加载到内存
可伸缩性:集群服务

Kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,是一个分布式的、分区的、可靠的分布式日志存储服务.他通过一种独一无二的设计提供了一个消息系统的工功能.

Kafka本身不是一个严格的消息中间件,但是对日志的存取顺序非常严格

Kafka特性
通过时间复杂度O(1)的磁盘数据结构提供消息的持久化,这种数据结构对于即使数以TB的消息存储也能够保持长时间的稳定性能
高吞吐量: 即使是非常普通的硬件Kafka也是可以支持每秒数以百万的消息.
Partition(分区) 、Consumer Group(消费者分组)

综合评价

消息中间| JAVA消息中间件概述相关推荐

  1. weblogic jms消息 删除_消息队列与消息中间件概述:消息中间件核心概念与技术选型...

    什么是消息? "消息"是在两台计算机间传送的数据单位. 消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象. 什么是队列? 队列(Queue)队列是一种先进先出 ...

  2. Java消息中间件(activeMQ)

    文章目录 **第一章 消息中间件概述** 1. 消息中间件的好处 2. 什么是消息中间件 3. 什么是JMS(规范) 4. 什么是AMQP(协议) 5. 几个常用消息中间对比 **第二章 初始JMS* ...

  3. Java消息中间件--ActiveMq,RabbitMQ,Kafka

    Java消息中间件–acitceMq,Kafuka,RubiitMq 能否用代理模式来写的,订阅,中间件 中间件, 非底层操作系统软件,非业务应用软件.不是直接给最终用户使用的,不能直接给客户带来价值 ...

  4. SpringCloud项目:实现推送消息到RabbitMQ消息中间件

    作者:杨桃桃 blog.csdn.net/yt812100/article/details/111785839 一.CRT创建RabbitMQ容器 CRT容器自带RabbitMQ消息中间件,只需要在C ...

  5. Java Web概述-练习题

    ~本特利~ Java Web概述练习题 一.填空题 1.Tomcat的默认端口号是[ 8080 ]. 2.在HTTP协议中,一个完整的请求消息是由请求行.[ 请求头 ]和实体内容三部分组成. 3.HT ...

  6. Java Web3J概述

    1 Java Web3J概述 Web3j是一个轻量级,Reactive(响应式),类型安全的Java库,用于与Ethereum网络上的客户端(节点)集成,这允许您使用Ethereum块链,而不需要为平 ...

  7. Java0基础学习笔记、心得-day01(Java入门需知、Java入门概述、Java语言相关知识、JDK与JRE关系,常用DOS命令、JDK的下载安装与HelloWorld案例实现与常见问题。)

    一.Java入门需知  * 1.你为什么要学习编程?--兴趣.职业.薪资?  * 2.具体Java开发岗位薪资可以参考-智联招聘 前程无忧 BOSS直聘等APP  * 3.如何进入IT行业:前端工程师 ...

  8. 【Java基础系列教程】第二章 Java语言概述、配置环境变量

    一.计算机编程语言概述 1.1 语言 语言(英文:Language)是人类进行沟通交流的表达方式.例如:中国人与中国人用普通话沟通.而中国人要和英国人交流,就要学习英语.              语 ...

  9. linux java db2,[转载]DB2 UDB for Linux, UNIX 和 Windows 中的 Java 开发概述: V8.1 更新版

    DB2 UDB for Linux, UNIX 和 Windows 中的 Java 开发概述:V8.1 更新版 DB2 UDB V8 中为了支持 Java 已经做了很多更改.本文总结了所有这些更改,同 ...

  10. 2.Java语言概述

    Java语言概述 Java学科脉络 第一阶段:JavaSE 包含Java,MySQL和SQL语言,JDBC 第二阶段:JavaWeb 包含HTML与CSS,JavaScript DOM与jQuery, ...

最新文章

  1. 数据库设计三大范式和ER模型
  2. android6.0 主题,Android 6.0 DatePickerDialog主题
  3. docker搭建harbor私有镜像库
  4. PHP 接口输出 图片
  5. jsp自定义alert
  6. bash: telnet: command not found...
  7. linux下的FTP服务配置
  8. 数据结构之插入排序:直接插入排序
  9. 这个“十一”长假,你是背“锅”出行吗?
  10. python笔记记录(包和模块)
  11. 中国凉亭行业市场供需与战略研究报告
  12. python flask快速入门与进阶-Flask基础进阶与python flask实战bbs教程
  13. Ubuntu 20.04美化及QQ、微信、ssh客户端安装
  14. Linux-Kali——解决Gnome桌面右键菜单无法打开terminal终端的问题
  15. 如何在VirtualBox上安装和安装Windows Home Server“ Vail” Beta
  16. Titan XP值不值?教你如何挑选深度学习GPU
  17. Spring MVC学习
  18. selenium自动化图片不加载设置
  19. 2019.11.20 LS-Dyna与MSC.Dytran特点
  20. LABVIEW绘制等高线

热门文章

  1. SAE使用以及GPS 的经纬度换算成距离的代码(转载)
  2. cocos 躲避球游戏(1) --创建项目和场景切换
  3. 描写计算机教室的词语,关于描写教室的词语
  4. PHP给PDF文件加水印(mpdf插件)
  5. 京东618自动浏览叠蛋糕app
  6. 高德地图看各省分界线_高德地图API生成地图(含有各个省份边界线)
  7. android 环信8.0通知栏,环信客服机器人v8.0.3发布:教你快速构建知识库,精准识别访客意图...
  8. Flutter上线项目实战——环信客服插件
  9. 2012-8-18可樂美文分享《遗留在时…
  10. 学生指导——学习心理