1、JMS(Java Message Service)Java消息服务,是Java20几种技术其中之一

2、JMS规范定义了Java中访问消息中间件的接口,但是没有给实现,这个实现就是由第三方使用者来开发实现,我们称为JMS provider,例如AMQ

3、实现了JMS接口和规范的消息中间件我们称为:JMS提供者(JMS Provider)

4、JMS Message 由三部分组成

消息头,每个消息对应的get set方法

消息属性,

消息体,具体业务数据

JMS producer ,消息生产者,创建并且发送JMS消息

JMS Consumer,消息消费者,接收并处理JMS消息

消息的消费可以采用两种方式,

1、同步,通过调用消息的receive方法阻塞到消息到达(一般不使用这种方式)

2、异步,客户端注册一个监听器到AMQ定义消息到达时所采取的动作

消息传递域的概念

JMS定义了两种消息传递域,点对点(point-to-point)传递域和发布/订阅传递域(publish/subscribe简写为pub/sub)

PTP点对点消息传递域的特点

1、一个消息只能有一个消息者

2、消息的生产者和消费者之间没有任何时间的相关性,无论消费者在生产者发送消息的时候是否处于运行状态它都可以提取消息

pub/sub订阅消息传递域的特点:

1、每个消息可以有多个消费者

2、生产者和消费者之间有时间上的关联性,在非持久性订阅状态下,消费者需要在启动状态下才可以收到生产者的消息,持久性订阅,消费者可以接收到它未启动时候的生产者发送的消息但是前提是消费者先订阅这个主题!

JMS常用类的描述

ConnectionFactory,连接工厂,用来创建对象,以连接到JMS的Provider

Connection :封装客户端和JMS之间的一个虚拟链接

Session:生产者和消费者一个单线程上下文,会话

会用用于创建生产者和消费者,和消息,会话提供了事务性的上下文,在这个上下文中,一组发送和接收被组合到一个原子操作中。

Destination:消息发送的目的地

Acknowledge:签收

Transaction:事物

JMS client:用来接收消息的Java应用

【AMQ】之JMS概念的更多相关文章

  1. java消息服务学习之JMS概念

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

  2. 消息队列的使用<一>:介绍、使用场景和JMS概念知识

    目录 介绍 消息队列的理解 举个栗子 使用场景 消息队列的模型与概念理解 JMS模型 基本概念: 内容: JMS定义的消息结构: PTP式消息传递 PUB/SUB式消息传递 可靠性机制 事务 消息持久 ...

  3. JMS概念

    来自为知笔记(Wiz)

  4. ActiveMQ消息队列从入门到实践(1)—JMS的概念和JMS消息模型

    1. 面向消息的中间件 1.1 什么是MOM 面向消息的中间件,Message Oriented Middleware,简称MOM,中文简称消息中间件,利用高效可靠的消息传递机制进行平台无关的数据交流 ...

  5. JMS笔记(一)

    1.jms概念 Java Message Service为 Java程序提供一种访问企业消息系统的方法,JMS应用由JMS生产者.JMS Provider.JMS消费者构成 1.1. 一条Messag ...

  6. Jms的MessageListener中的Jms事务

    摘要 一般来说,如果为JmsTemplate做了事务配置,那么它将会与当前线程的数据库事务挂钩,并且仅在数据库事务的afterCommit动作中提交. 但是,如果一个MessageListener在接 ...

  7. JMS解决系统间通信问题

    近期在给公司项目做二次重构,将原来庞大的系统拆分成几个小系统.系统与系统之间通过接口调用,系统间通信有非常多方式,如系统间通信接口做成请求controller,只是这样不方便也不安全,经常使用的方式是 ...

  8. ActiveMQ:JMS开源框架入门介绍

    介绍基本的JMS概念与开源的JMS框架ActiveMQ应用,内容涵盖一下几点: 基本的JMS概念 JMS的消息模式 介绍ActiveMQ 一个基于ActiveMQ的JMS例子程序 一:JMS基本概念 ...

  9. 从JMS到KafKa

    从JMS到KafKa JMS (1)JMS概念 JMS(Java Message Service,java消息服务)API是一个消息服务的标准或者说是规范,允许应用程序组件基于JavaEE平台创建.发 ...

随机推荐

  1. 百练6183-人民币支付-2014正式A题

    A:人民币支付 总时间限制:  1000ms 内存限制:  65536kB 描述 从键盘输入一指定金额(以元为单位,如345),然后输出支付该金额的各种面额的人民币数量,显示100元,50元,20元, ...

  2. jquery 获取访问当前页面的开源设备信息

    <!DOCTYPE html> <html> <head> <title>测试js</title> <meta http-equiv= ...

  3. 20155219--pwd指令的简单实现

    pwd指令的简单实现 pwd命令作用 Linux中用** pwd **命令来查看"当前工作目录"的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确 ...

  4. textarea去掉右下三角号

    /*去掉textarea右下角三角符号*/ resize : none; 修改样式直接覆盖就行,会把默认样式覆盖掉.如border,width,height,border-radius

  5. Codeforces Div3 #501 A-E(2) F以后补

    感觉自己有点强迫症  不都写出来就找理由不写题解 http://codeforces.com/contest/1015   题目链接 A. Points in Segments 题目意思  n个线段  ...

  6. hdu1686 Oulipo KMP/AC自动机

    The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e ...

  7. ionic局部刷新页面与刷新整个页面

    1.全局刷新,禁用缓存: 在app.js中设置cach:false,如下: .state('material', { url: '/material', cache:false, templateUr ...

  8. 使用VUE搭建tab标签组件

    Vue2.0 多 Tab切换组件简单封装,满足自己简单的功能,可以直接拿去使用! 首先上效果图: 功能简单介绍: 1.支持tab切换 2.支持tab定位 3.支持tab自动化 仿React多Tab实现 ...

  9. MySQL聚合函数与数据分组

    我们最常需要的是汇总数据而不是把他们实际检索出来 确定表中行数(或满足某个条件或包含某个特定值的行数) 确定表中行组的和 找出表列(或所有行或特定列)的最大值,最小值和平均值 聚集函数是运行在行组上, ...

  10. Airtest Project的探索和使用

    Airtest使用参考博文: https://testerhome.com/topics/12391 1. 安装Python 3 2. 安装pip: 安装方法参考另外一篇随笔 pip3部署: C:\U ...