`

java消息服务(jms) 概念

    博客分类:
  • jms
阅读更多
什么是消息

消息是组件和应用程序之间的一种通信形式。一个消息系统是点对点的设施。
消息客户端可以发送或接收消息。每一个客户端都连接到一个消息代理。这个代理
可以创建,发送,接收和读取消息。

消息传递可以分布式通信,是松耦合的。一个组件发送一条消息到目的地,接受者可以
从目的地接收到该条消息。然而,发送者和接受者不必为了通信同时可用。事实上,发送者
并不需要了解接收者的任何信息。同样接受者也不需要知道发送者。两者只需要知道消息的
格式和目的地。在这方面,消息不同于其他紧耦合技术,如RMI(远程方法调用),必须
知道远程应用的方法。

消息传递的优点:

>便于集成:
使用消息传送机制,你可以向在完全不同的平台上实现的应用程序请求调用服务。

>缓解系统瓶颈
某些组件只能处理数量有限的请求,而且它将很快会变成系统瓶颈。
消息传送机制可以用于缓解乃至消除系统瓶颈。
因为消息传送可以是异步处理的,这点很重要,不需要阻塞。
将请求发送到一个消息系统后,消息系统可以分发给多个消息处理者

>提高可伸缩性
和缓解系统瓶颈的方式非常相似,消息传送机制还可以用于提高系统的整体可伸缩性和吞吐量,
同时,它还能够有效地缩短响应时间。通过引入能够并发处理不同消息的多个消息接收者,
消息传送系统的可伸缩性得以实现。由于消息排队等候处理、队列中的消息数量,或者称为队列深度,
开始逐渐增大,系统响应时间开始变长,与此同时,吞吐量也会下降。提高系统可伸缩性的一种方法就是,
向队列中添加多个并发消息侦听器,以便并发处理更多的请求。提高系统整体可伸缩性的另一种方法
,就是要尽可能地利用系统的异步方式。如此一来,按照这种方式的组件去耦就会允许系统水平增长,
而此时硬件资源则成为了主要的限制因素。虽然这看起来可能像一剂灵丹妙药,
不过,中间件只能在系统的另一个主要瓶颈(数据库)的实质性限制之内进行水平扩展(注:如果使用了数据库)。
你可以在单独的队列中拥有数百个甚至数千个消息侦听器,以此来提供同时处理多条消息的能力,
但是,数据库却可能只能处理数量有限的并发请求。尽管在应对数据库瓶颈问题方面,
已经有多种复杂的技术,然而现实却是:能将中间件层扩展到什么程度,
始终会受到数据库这种实质性的限制。

>体系结构灵活性和敏捷性
使用消息传送机制作为企业体系结构整体解决方案的一部分,
这为未来的体系结构灵活性和敏捷性留有了更大的余地。
这些优良特性是通过使用抽象和去耦来实现的。使用消息传送机制,
各个子系统、组件,乃至服务都能够被抽象出来,甚至可以达到在对其知之甚少,
甚至是一无所知的情况下,即可用客户端组件所取代的程度。

总之,消息传递机制的优点都得益于它的异步机制,减少了阻塞,缓解系统瓶颈,提高
系统可伸缩性。去耦合。


JMS API

JMS API 允许应用创建,发送,接收和阅读消息。是由Sun和其他几个公司设计。
JMS API 定义了一组通用的接口和相关语义允许使用java语言和其他的消息系统进行通信。
JMS是一种厂商无关的API,可供多个不同的企业消息厂商使用,和JDBC非常相似。

api主干接口:
ConnectionFactory
Destination
Connection
Session
Message
MessageProducer
MessageConsumer

ConnectionFactory,Destination必须从JMS实现供应商处获得。其他的可以从接口方法获取。
从ConnectionFactory可以获取Connection,从Connection中可以获取Session.
Session就可以创建Producer,Consumer发送消息。




消息传送模型:

JMS支持两种消息传送模型:点对点和发布订阅模型。
两种模式下接口不同:都是对上面说的主干接口进行不同的定制化,
如对于Destination,点对点使用Queue队列,发布订阅使用Topic。


发布订阅:广播形式。

message producer:消息生产者。发送消息的client。
message receiver:消息消费者。接收消息的client。
一个JMS client既可以是producer也可以是reciever

点对点(P2P)
一对一消息传送。通过队列(Queue)同步或异步的发送,接收消息。
发送到队列中的消息被一个而且仅仅一个接受者接收。即使一个
队列有配置有多个接受者。支持负载均衡,可以配置多个接受者。
消息传递基于pull,polling都可

发布订阅(Pub/Sub)
消息会被发布到主题中(Topic)。可以被多个订阅者读取。每个订阅者
都会接收到每条消息的一个副本。消息传递基于push。
比p2p去耦合能力更强。
0
0
分享到:
评论

相关推荐

    JMS(java消息服务)规范培训教程

    走到这里,我也不想去解释jms spec上那些抽象且复杂的概念了,说的很白,1年多了我自己也没弄懂是个什么东西,也没时间从头到尾去仔细的看,同时我认为没必要,我所关注的是如何让jms跑起来,并且工作正常,所以spec...

    收入了164个完整的、来自实战的Java编程实例,每个例子都有详尽的注释,全新的第二版涵盖了Java v1.3,实现了20个不同的Java API,其中包括Servelt、JSP、XML、Swing和Java2D

    java 网络高级编程(PDF) 介绍了网络进程通信的主要技术,Java有关的Web技术,异步消息服务技术JMS和Java Mail技术,Java安全体系结构、密钥、消息摘要、数字签名等技术 Java 极限编程(PDG) 简短介绍极限编程文法及...

    WSAD环境下JMS异步通信全攻略

     EJB 2.0和J2EE 1.3规范开始提供对Java消息服务(JMS)的支持。在J2EE 1.3加入JMS之前,J2EE环境中的组件通过RMI-IIOP协议通信,J2EE是一个完全同步的平台。由于在J2EE 1.3规范中引入了JMS,J2EE环境开始具备一项...

    java书城商店源码-messaging-with-jms-queues:消息传递与jms队列

    这种消息传递类型建立在消息队列、发送方和接收方的概念之上。 每条消息都被寻址到一个特定的队列,接收客户端从为保存它们的消息而建立的队列中提取消息。 在点对点模型中,每条消息都保证由一个消费者以异步方式...

    有关JMS/或j2ee技术的说明与问题

    JMS(Java Messaging Service)是Java平台上有关面向消息中间件的技术规范,翻译为Java消息服务。JMS支持点对点和发布/订阅两种消息模型。 编辑本段JMS基本概念

    Java 2技术内幕(Part3)

    掌握如何使用消息驱动的bean和JMS进行消息传递 使用JMF、Java Sound、JAI和Java 3D向应用程序中添加多媒体 使用JavaMail开发自动化电子邮件应用程序 将陈旧的系统转换为Web服务 学习如何使用Java Speech处理自然语言...

    Java 2技术内幕(Part1)

    掌握如何使用消息驱动的bean和JMS进行消息传递 使用JMF、Java Sound、JAI和Java 3D向应用程序中添加多媒体 使用JavaMail开发自动化电子邮件应用程序 将陈旧的系统转换为Web服务 学习如何使用Java Speech处理自然语言...

    Java测试新技术TestNG和高级概念.part2

    4.6 Java消息服务(JMS) 4.7 Java持久API(JPA) 4.8 Enterprise JavaBeans 3.0(EJB3) 4.9 Java API for XML Web Services(JAX-WS) 4.10 Servlets 4.11 XML 4.12 本章小结 第5章 集成 5.1 Spring 5.2 Guice ...

    Java相关技术(详细资料)

     7、JMS(Java Message Service)提供企业消息服务,如可靠的消息队列、发布和订阅通信、以及有关推拉(Push/Pull)技术的各个方面。  8、JTS(Java transaction Service)提供存取事务处理资源的开放标准,这些事务...

    从Java走向Java+EE+.rar

    第18章 Java消息服务 265 18.1 消息系统和JMS 265 18.1.1 JMS API 265 18.1.2 点对点消息模式 266 18.1.3 发布者/订阅者模式 267 18.1.4 同步和异步方式 268 18.2 编程模型 268 18.2.1 管理对象 269 ...

    Java测试新技术TestNG和高级概念.part1

    4.6 Java消息服务(JMS) 4.7 Java持久API(JPA) 4.8 Enterprise JavaBeans 3.0(EJB3) 4.9 Java API for XML Web Services(JAX-WS) 4.10 Servlets 4.11 XML 4.12 本章小结 第5章 集成 5.1 Spring 5.2 Guice ...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    6.4.2 JMS消息头和消息属性 253 6.4.3 重用消息对象 254 6.4.4 JMS传递方式和有效时间 255 6.4.5 设置消息的优先级 256 6.4.6 消息的确认方式 256 6.4.7 消息选择器 257 6.4.8 消息的临时目的261 6.5 使用队列浏览器...

    Java 2技术内幕(Part2)

    掌握如何使用消息驱动的bean和JMS进行消息传递 使用JMF、Java Sound、JAI和Java 3D向应用程序中添加多媒体 使用JavaMail开发自动化电子邮件应用程序 将陈旧的系统转换为Web服务 学习如何使用Java Speech处理自然语言...

    Java 2技术内幕(Part5)

    掌握如何使用消息驱动的bean和JMS进行消息传递 使用JMF、Java Sound、JAI和Java 3D向应用程序中添加多媒体 使用JavaMail开发自动化电子邮件应用程序 将陈旧的系统转换为Web服务 学习如何使用Java Speech处理自然语言...

    Java 2技术内幕(Part4)

    掌握如何使用消息驱动的bean和JMS进行消息传递 使用JMF、Java Sound、JAI和Java 3D向应用程序中添加多媒体 使用JavaMail开发自动化电子邮件应用程序 将陈旧的系统转换为Web服务 学习如何使用Java Speech处理自然语言...

    JMS规范v1.1官方手册.pdf

    JMS规范v1.1的官方原版,大家学习ActiveMQ的时候可以进行参考。详细介绍了包括连接、session、生产者、消费者、topic、queue等概念。深入学习的必备手册。

    深入浅出JMS-JMS介绍说明文档

    深入浅出JMS,主要介绍J2EE中的一个重要规范JMS,因为这个规范在企业中的应用十分的广泛,也比较重要,我们主要介绍JMS的基本概念和它的模式,消息的消费以及JMS编程步骤。

    Java数据编程指南

    J2EE通信 通信概述 JMS的详细情况 消息驱动EJB 小结 第24章 Java数据对象(JDO) 概述 JDO对象模型 JDO API JDO实例的生命周期 JDO和EJB 开发可持久类 范例应用程序 配置FFJ...

    java 面试题 总结

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    即时消息传递系统编程源代码解析02

    本书详细地描述了如何编写即时消息传递补应用程序,包括即时消 息传递的概念、设计方法和源程序代码以及程序代码的详细解释。 全书简要描述了即时消息传递应用的概念、范围及其演变过程;叙 述了应用...

Global site tag (gtag.js) - Google Analytics