`

JMS学习笔记 (一)基本概念.

    博客分类:
  • JMS
 
阅读更多
基本概念

JMS是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。

它的特点

1.多种语言和协议编写客户端。语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)

2.对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性

3.通过了常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容4.J2EE 1.4 商业服务器上
支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA

5.支持通过JDBC和journal提供高速的消息持久化

6.从设计上保证了高性能的集群,客户端-服务器,点对点

8.支持Ajax

9.支持与Axis的整合

10.可以很容易得调用内嵌JMS provider,进行测试

它有两种发送消息模型

○ Point-to-Point(P2P)
○ Publish/Subscribe(Pub/Sub)
即点对点和发布订阅模型

P2P



涉及到的概念
消息队列(Queue)
发送者(Sender)
接收者(Receiver)
每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到他们被消费或超时。
P2P的特点



每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)
发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列,如果接收者未运行,它将被保存一直到接收者运行后接收。
接收者在成功接收消息之后需向队列应答成功
如果你希望发送的每个消息都应该被成功处理的话,那么你需要P2P模式。

Pub/Sub




涉及到的概念
主题(Topic)
发布者(Publisher)
订阅者(Subscriber)
客户端将消息发送到主题。多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
Pub/Sub的特点

每个消息可以有多个消费者,一条消息被订阅时,它将发到所有感兴趣的订阅者,所以零到多个订阅者将接收到消息的一个拷贝。但是在消息代理接收到消息时,只有激活订阅的者能够获得消息的一个拷贝。

发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息,而且为了消费消息,订阅者必须保持运行的状态。
为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
如果你希望发送的消息可以不被做任何处理、或者被一个消息者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型

消息的消费
在JMS中,消息的产生和消息是异步的。对于消费来说,JMS的消息者可以通过两种方式来消费消息。
○ 同步
订阅者或接收者调用receive方法来接收消息,receive方法在能够接收到消息之前(或超时之前)将一直阻塞 。 同步调用时,在消息从receive方法返回之前,就已经调用了ACK;因此如果Client端没有处理成功,此消息将丢失(可能重发,与ACK_MODE有关)。

○ 异步
订阅者或接收者可以注册为一个消息监听器。当消息到达之后,系统自动调用监听器的onMessage方法。基于异步调用时,消息的确认是在onMessage方法返回之后,如果onMessage方法异常,会导致消息重发。

  • 大小: 32.9 KB
  • 大小: 38.9 KB
分享到:
评论

相关推荐

    JMS学习笔记(一)——JMS简介安装ActiveMQ

    **JMS学习笔记(一)——JMS简介与ActiveMQ安装** Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的标准接口。它为应用程序提供了一种标准的方式,用来创建、发送、接收和读取...

    JMS学习笔记

    **JMS学习笔记** Java消息服务(Java Message Service,简称JMS)是Java平台中用于在分布式环境中交换异步消息的标准API。它提供了一种可靠的消息传递机制,使得应用程序可以在不互相依赖的情况下进行通信,从而...

    JMS相关,教程,例子,学习笔记

    通过阅读**jms学习笔记.docx** 和 **JMS例子.docx**,你可以深入理解JMS的使用方式,获取实践经验。而 **JMS教程.pdf** 和 **基于XML和JMS的异构数据交换集成的研究.pdf** 则提供了理论基础和高级应用场景的讲解,有...

    ActiveMQ学习笔记(二) JMS与Spring

    在本篇ActiveMQ学习笔记中,我们将探讨JMS(Java Message Service)与Spring框架的集成。JMS是一种标准API,用于在分布式环境中进行异步消息传递,而Spring框架则为开发人员提供了强大的依赖注入和管理服务的能力。...

    RocketMQ学习笔记 1

    RocketMQ学习笔记 1是关于Apache RocketMQ的学习笔记,涵盖了RocketMQ的基本概念、架构、消息模型、Producer和Consumer的基本概念、JMS规范等知识点。 1. 消息模型 在RocketMQ中,消息模型是指消息的生产、存储和...

    RocketMQ学习笔记 .pdf

    在消息队列的理论知识中,我们首先需要了解消息中间件的基本概念和作用。消息中间件是一种应用程序或进程间传递消息的软件,它作为消息的接收者和发送者之间的中介。消息的传递通常是异步的,可以实现系统组件的解耦...

    Java学习笔记.zip

    Java学习笔记.zip中的内容涵盖了Java的基础到进阶知识,主要分为JavaSE(标准版)和JavaEE(企业版)两个部分。 JavaSE是Java的基础,它是Java编程的核心,包括了基本语法、数据类型、控制结构、类与对象、接口、...

    JAVA学习笔记————————

    在深入探讨JAVA学习笔记之前,我们首先理解一下JAVA这一编程语言的重要性。JAVA,由Sun Microsystems公司(现已被Oracle收购)于1995年推出,是一种面向对象的、跨平台的编程语言,以其“一次编写,到处运行”的特性...

    高级程序员学习笔记.rar

    这些学习笔记涵盖了多个重要的IT技术领域,主要针对高级程序员,旨在深入理解和掌握各种编程语言、框架和数据库管理系统。以下是对每个主题的详细说明: 1. **C++**:C++是一种中级语言,由C语言发展而来,支持面向...

    EJB学习笔记.doc

    【EJB学习笔记】 EJB,全称为Enterprise Java Beans,是Java平台上的一个标准,用于开发和部署服务器端的分布式组件。它基于Java语言,为创建高效能、安全且可扩展的企业级应用提供了框架。EJB规范由Java ...

    《java学习》-Java 学习笔记.zip

    本压缩包文件“《java学习》-Java 学习笔记.zip”包含了丰富的学习资源,帮助初学者和进阶者深入理解Java编程。 1. **Java基础知识** - **语法**:Java的基础语法包括变量、数据类型、运算符、流程控制语句(如if-...

    j2ee.rar_java 学习笔记

    本学习笔记将深入探讨Java EE的核心概念和技术,旨在帮助初学者快速掌握这一强大的开发环境。 **1. Java EE架构** Java EE架构基于组件模型,主要包括以下几层: - 客户端层:可以是Web浏览器、瘦客户端或富...

    java ,bootstrap,servlet,javaWep基本笔记.zip

    Java、Bootstrap、Servlet和Java Web是Web开发中的四个重要概念,它们构成了现代Web应用程序的基础。...这些笔记对于理解Java Web开发的基本流程和最佳实践至关重要,可以帮助初学者或开发者巩固基础,提高开发效率。

    ActiveMQ+In+Action学习笔记.docx

    学习ActiveMQ,不仅需要了解其基本概念,还要掌握如何配置和管理连接工厂(ConnectionFactory)、连接(Connection)、会话(Session)、目的地(Destination,包括Queue和Topic)以及消息生产者(MessageProducer)...

    Java-J2EE全部学习笔记 培训结构的学习资料

    5. **JDBC与数据库交互**:Java数据库连接(JDBC)是Java中访问数据库的标准API,学习笔记可能会涵盖连接数据库、执行SQL语句、处理结果集等基本操作。 6. **MVC模式与框架**:在J2EE开发中,Spring MVC和Struts是...

    java后端学习笔记.zip

    本学习笔记主要涵盖了Java后端开发的基础知识、核心技术以及常见框架,旨在帮助初学者和进阶者深入理解Java后端开发。 一、Java基础 Java后端开发首先需要掌握Java语言的基本语法,包括数据类型、控制结构(如if...

    j2ee学习笔记很好的

    本学习笔记涵盖了J2EE的关键技术和概念,对于想要深入理解并掌握这一领域的开发者来说,是非常宝贵的学习资源。"非常非常的好"这一评价,意味着这份资料很可能详尽且实用,能够帮助学习者逐步构建起对J2EE全面的理解...

    Java JDK 6学习笔记——ppt简体版

    Java JDK 6学习笔记——PPT简体版是针对初学者和有经验的开发者们的一份宝贵资源,它深入浅出地介绍了Java编程语言的核心概念和技术。这份笔记以PPT的形式呈现,使得学习过程更加直观易懂,适合课堂教学或自我学习。...

Global site tag (gtag.js) - Google Analytics