概述


介绍中间件、MOM、JMS、ActiveMQ,及相互的关系。

中间件


由于业务的不同、技术的发展、硬件和软件的选择有所差别,导致了异构组件或应用并存的局面。要使这些异构的组件协同工作,一个有效的方式就是提供一个允许它们进行通信的层,该层即为中间件

在概念上,中间件位于应用程序层与平台层(操作系统和底层网络服务)之间:

分类:

  • 基于远程过程调用(Remote Procedure Call, RPC)的中间件
    允许一个应用程序中的过程调用远程应用程序中的过程,就好像它们是本地调用一样。
  • 基于对象请求代理(Object Request Broker, ORB)的中间件
  • 面向消息(Message-Oriented Middleware,MOM)的中间件
    使分布式应用程序可以通过发送和接收消息来进行通信和交换数据。

MOM


全称:Message-Oriented Middleware 中文:面向消息的中间件。

MOM通信模型:

MOM模型中的四个基本元素:消息传递提供者目的地客户端(发送方或接收方)、消息
发送方客户端将消息发送到消息提供者维护的目的地,这些消息一直被保留直到接收方客户端将消息取出。

JMS


全称:Java Message Service 中文:Java消息服务。

JMS是Java的一套API标准,最初的目的是为了使应用程序能够访问现有的MOM系统(客户端通过JMS访问消息提供者);后来被许多现有的MOM供应商采用,并实现为MOM系统。
基于JMS实现的MOM,又被称为JMS Provider。

ActiveMQ


Apache出品,完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。

它有很多功能、特色,所以它的详细信息很复杂。但是基于这一刻,我们只需要知道两件事:(1) 它是MOM;(2) 它是JMS的一个实现。

相互关系


参考


  1. Sun Java System Message Queue 3.7 UR1 技术概述 — 第 1 章 消息传送系统:简介
    这里有一系列的文章,对JMS的技术做了详细的说明,只是没有代码

AMQ学习笔记 - 01. 相关背景的更多相关文章

  1. C++ GUI Qt4学习笔记01

    C++ GUI Qt4学习笔记01   qtc++signalmakefile文档平台 这一章介绍了如何把基本的C++只是与Qt所提供的功能组合起来创建一些简单的图形用户界面应用程序. 引入两个重要概 ...

  2. SaToken学习笔记-01

    SaToken学习笔记-01 SaToken版本为1.18 如果有排版方面的错误,请查看:传送门 springboot集成 根据官网步骤maven导入依赖 <dependency> < ...

  3. 软件测试之loadrunner学习笔记-01事务

    loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...

  4. MySQL学习笔记-事务相关话题

    事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...

  5. Redis:学习笔记-01

    Redis:学习笔记-01 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 1. Redis入门 2.1 ...

  6. PHP 学习笔记 01

    例子: 为什么要学PHP 主观原因: 前段时间在学校处理了毕业的一些事情,回到上海后开始了找工作的旅程.意向工作是WPF开发或者ASP.NET 作为后端的WEB开发. 陆陆续续一直在面试,其中有一家公 ...

  7. vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍

    这是我的vue.js 2.0的学习笔记,采取了将官方文档中的代码集中到一个文件的形式.目的是保存下来,方便自己查阅. !官方文档:https://cn.vuejs.org/v2/guide/ 01. ...

  8. [Golang学习笔记] 01 工作区和GOPATH

    Go语言3个环境变量: GOROOT:GO语言按照根路径,也就是GO语言的安装路径. GOPATH:若干工作区目录的路径.是我自己定义的工作空间. GOBIN:GO程序生成的可执行文件(executa ...

  9. [原创]java WEB学习笔记01:javaWeb之tomcat的安装和配置

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

随机推荐

  1. 分享:Android中利用机器码注册机制防止破解(转)

    转自:http://blog.csdn.net/huzgd/article/details/6684094 最近做一个Android应用时遇到这个问题,客户要求功能必须注册才能使用,而程序本身又不是联 ...

  2. Cocos2d html5 笔记 1: overview

    昨天接触到了cocos2d-html5的的东东了, 第一次看其源代码一头雾水,幸好samples目录下面有几个例子,可以从这个入手. MoonWarriors是一个射击类的游戏, 有点像以前玩的雷电, ...

  3. How does a relational database work

    http://blog.jobbole.com/100349/ http://coding-geek.com/how-databases-work/

  4. ext2元数据结构

    概述           本篇博客主要描述ext2文件系统中的各种典型元数据结构,其中包括文件系统级别的元数据,如超级块,块组描述符等,也包括文件级的元数据,如文件目录项,文件inode等.   ex ...

  5. Plugin with data access

    In this tutorial I'll be using the nopCommerce plugin architecture to implement a product view track ...

  6. 基础知识 - Golang 中的正则表达式

    ------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...

  7. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 7.全局防护盲点的总结上篇

    0x01 背景 现在的WEB应用对SQL注入的防护基本都是判断GPC是否开启,然后使用addlashes函数对单引号等特殊字符进行转义.但仅仅使用这样的防护是存在很多盲点的,比如最经典的整型参数传递, ...

  8. 架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层

    1.概述 前两遍文章中,我们一直在说后文要介绍Nginx + Keepalived的搭建方式.这篇文章开始,我们就来兑现前文的承诺,后续的两篇文章我们将介绍Nginx + Keepalived和 LV ...

  9. Python笔记(二)

    在昨天学习Python之后,感觉它的的确确挺简洁,也挺容易学习.在昨天的学习中我们了解到了Python中while循环语句以及if...else语句的使用,while语句的使用格式是这样的:while ...

  10. Doing Homework 状态压缩DP

    Doing Homework 题目抽象:给出n个task的name,deadline,need.  每个任务的罚时penalty=finish-deadline;   task不可以同时做.问按怎样的 ...