JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化企业应用的开发。它支持两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/Sub)模型。P2P 模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。
这是一个MIS系统的一部分,用于计算最后的收费金额,由于计算过程及其复杂,要求实现不影响用户接口响应,就是要实现异步计算,同时可以处理多个计算请求,计算结束后通知发出计算命令的客户端。功能十分简单,只要一个MDB就可以实现了,但是要通知客户端计算结束使得系统变得有趣多了。
全书共分为3部分共14章,第一部分 WebSphere MQ原理和体系结构,分为两章;第二部分 WebSphere MQ系统管理,分为六章,分别介绍安装、配置、管理、控制命令和问题确定;第三部分 WebSphere MQ应用开发,由五章组成,介绍程序设计、编写和例子程序。 本书是WebSphere MQ产品的实用指南,所以至少对两种读者有益,一种是WebSphere MQ产品的初学者,本书能成为指导性资料;另一种是WebSphere MQ的系统管理员和开发者。
本文首先介绍了消息中间件的原理,然后介绍了目前流行的消息中间件产品和一些开源实现。最后详细分析了SUN及其伙伴公司提出的旨在统一各种消息中间件系统接口的规范(JMS)。
消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。在分布式计算环境中,为了集成分布式应用,开发者需要对异构网络环境下的分布式应用提供有效的通信手段。
现今,越来越多的企业面临着各种各样的数据集成和系统整合,CORBA、DCOM、RMI等RPC中间件技术也应运而生,但由于采用RPC同步处理技术,在性能、健壮性、可扩展性上都存在着诸多缺点。而基于消息的异步处理模型采用非阻塞的调用特性,发送者将消息发送给消息服务器,消息服务器在合适的时候再将消息转发给接收者;发送和接收是异步的,发送者无需等待,二者的生命周期也可以不必相同,而且发送者可以将消息间接传给多个接收者,大大提高了程序的性能、可扩展性及健壮性,这使得异步处理模型在分布式应用上比起同步处理模型更具有吸引力。
全书共分为3部分共14章,第一部分 WebSphere MQ原理和体系结构,分为两章;第二部分 WebSphere MQ系统管理,分为六章,分别介绍安装、配置、管理、控制命令和问题确定;第三部分 WebSphere MQ应用开发,由五章组成,介绍程序设计、编写和例子程序。 本书是WebSphere MQ产品的实用指南,所以至少对两种读者有益,一种是WebSphere MQ产品的初学者,本书能成为指导性资料;另一种是WebSphere MQ的系统管理员和开发者。
ActiveMQ支持订阅同一个queue的consumers上的集群。如果一个consumer失效,那么所有未被确认(unacknowledged)的消息都会被发送到这个queue上其它的consumers。如果某个consumer的处理速度比其它 consumers更快,那么这个consumer就会消费更多的消息。
本文介绍开源的JMS服务器openJms,及怎样使用openJms来构建系统之间健全、高度可用的通讯,从而简化企业级应用的开发。 openJms符合SUN的JMS API 1.0.2规范,支持消息队列,还支持消息传递的发布/订阅模式,本文先就系统服务的搭建及JMS的非结构化消息发送和接收进行说明。
JMS & ActiveMQ介绍
实现邮件短信提醒等比较费时的功能时,通常采用消息机制异步实现两个或多个消息客户端(即应用端和邮件发送端)之间的通信,本文就如何在Spring框架下实现JMS进行描述。
JMS 给java 程序员提供了一种通用的方式来创建、发送、接收和查看企业消息系统消息。企业消息产品(或者有时称为面向消息的中间件产品)正逐渐成为公司内操作集成的关 键组件。这些产品可以将分离的业务组件组合成一个可靠灵活的系统。除了传统的MOM 供应商,企业消息产品也可以由数据库供应商和许多与网络相关的公 司来提供。Java 语言的客户端和Java 语言的中间层服务必须能够使用这些消息系统。JMS 为Java 语言程序提供了一个通用的方式来获取这些系统。JMS 是一个接口和相关语义的集合,那些语义定义了JMS 客户端如何获取企业消息产品 的功能。由于消息是点对点的,所以JMS 的所有用户都称为客户端(clients)。JMS 应用由定义 消息的应用和一系列与他们交互的客户端组成。
1、实现 JMS1.1 规范,支持 J2EE1.4以上 2、可运行于任何 jvm和大部分 web 容器(ActiveMQ works great in any JVM) 3、支持多种语言客户端(java, C, C++, AJAX, ACTIONSCRIPT 等等) 4、支持多种协议(stomp,openwire,REST) 5、良好的 spring 支持(ActiveMQ has great Spring Support) 6、速度很快,JBossMQ的十倍(ActiveMQ is very fast; often 10x faster than JBossMQ.) 7、与 OpenJMS、JbossMQ等开源jms provider 相比,ActiveMQ有 Apache 的支 持,持续发展的优势明显。
activeMQ的源码分析-开篇以前对JMS尤其是activeMQ不了解,一看到什么地方需要使用消息中间件,就比较反感。主要原因是感觉JMS的实现都比较复杂,怕在真实使用过程中出现什么问题时会比较被动。所以,我们基本上是自己写类似的消息中间件,当然功能非常简单。但其实我们自己写出来的中间件,随着功能的不断增加、人员和时间的种种问题,导致最终我们自己做出来的所谓消息中间件越来越不能维护。在吸取了一次一次这种重复发明"轮子"的事情中,我们觉得也许一开始就采用成熟开源的产品也许是条更好的方式。
特性及优势 1、实现JMS1.1规范,支持J2EE1.4以上<br> 2、可运行于任何jvm和大部分web容器(ActiveMQ works great in any JVM)<br> 3、支持多种语言客户端(java,C,C++,AJAX,ACTIONSCRIPT等等)<br> 4、支持多种协议(stomp,openwire,REST)<br> 5、良好的spring支持(ActiveMQ has great Spring Support)<br> 6、速度很快,JBossMQ的十倍(ActiveMQ is very fast;often 10x faster than JBossMQ.)<br> 7、与OpenJMS、JbossMQ等开源jmsprovider相比,ActiveMQ有Apache的支持,持续发展的优势明显。
ActiveMQ是Apache出品,最流行的,能力强劲的开源消息中间件,应用中引入中间件的好处是减少服务器之间的依赖关系,提高扩展性。
JMS基础知识*JMS消息类型点对点类型:消息生产者将生产的消息放入一个队列中,消费者从消息队列中取走消息。消息一旦被一个消费者取走,该消息就从消息队列中删除。也就是说,一条消息仅能被一个消费者消费一次。发布/订阅类型:这种类型的JMS与点对点类型的最大不同是,发布者发布的一条消息可以被该消息的所有订阅者消费一次,即每个订阅者都有一次消息该消息的机会。
消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。在分布式计算环境中,为了集成分布式应用,开发者需要对异构网络环境下的分布式应用提供有效的通信手段。为了管理需要共享的信息,对应用提供公共的信息交换机制是重要的。