Java消息服务
(java Message Service,简称JMS)是用于访问企业消息系统的开发商中立的API。企业消息系统可以协助应用软件通过网络进行消息交互。
JMS的编程过程很简单,概括为:应用程序A发生一条消息到消息服务器的某个目的地,然后消息服务器把消息转发给应用程序B。因为应用程序A和应用程序B没有直接的代码关联,所以两者实现了解耦。
JMS中的消息
消息传递系统的中心就是消息。一条Message由三个部分组成:
头,属性和主体。
消息有下面几种类型,他们都是派生自Message接口。
StreamMessage:一种主体中包含Java基元值流的消息。其填充和读取均按顺序进行。
MapMessage:一种主体中包含一组名-值对的消息。没有定义条目顺序。
TextMessage:一种主体中包含Java字符串的消息(例如,XML消息)
ObjectMessage:一种主体中包含序列化Java对象的消息
BytesMessage:一种主体中包含连续字节流的消息。
消息的传递模型
:
JMS支持两种消息传递模型:点对点,发布/订阅。这两种消息传递模型非常相似,但有以下区别。
1,点对点(point-to-point,简称PTP)
PTP消息传递模型规定了一条消息只能传递给一个接收方。采用javax.jms.Queue表示。
2,发布/订阅(publish/subscribe)
Pub/sub消息传递模型允许一条消息传递给多个接收方。采用javax.jms.Topic表示。
这两种模型都通过扩展公用基类来实现。例如:javax.jms.Queue和javax.jms.Topic都扩展自javax.jms.Destination类。
配置目标地址
开始JMS编程前,我们需要先配置消息到达的目标地址,因为只有目标地址存在了,我们才能发送消息到这个地址。由于每个应用服务器关于目标地址的配置方式都有所不同,下面以jboss为例,配置一个queue类型的目标地址。
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.mq.destination:service=Queue,name=foshanshop">
<attribute name="JNDIName">queue/foshanshop</attribute>
<depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
</mbean>
</server>
Jboss使用一个XML文件配置队列地址,文件的取名格式应遵守*-service.xml
<attribute name="JNDIName">属性指定了该目标地址的全局JNDI名称。如果你不指定JNDIName属性,jboss会为你生成一个默认的全局JNDI,其名称由“queue”+“/”+目标地址名称组成。另外在任何队列或主题被部署之前,应用服务器必须先部署Destination Manager Mbean,所以我们通过<depends>节点声明这一依赖。
采用消息驱动Bean
(Message Driven Bean)接收消息
消息驱动Bean(MDB)是设计用来专门处理基于消息请求的组件。它和无状态session bean一样也使用了实例池技术,容器可以使用一定数量的bean实例并发处理成百上千个JMS消息。正因为MDB具有处理大量并发消息的能力,所以非常适合应用在一些消息网关产品。如果一个业务执行的时间很长,而执行结果无需实时向用户反馈时,也很适合使用MDB。如订单成功后给用户发送一封电子邮件或发送一条短信等。
一个MDB通常要实现MessageListener接口,该接口定义了onMessage()方法。Bean通过它来处理收到的JMS消息。
package javax.jms;
public interface MessageListener{
public void onMessage(Message message);
}
当容器检测到bean守候的目标地址有消息到达时,容器调用onMessage()方法,将消息作为参数传入MDB。MDB在onMessage()中决定如何处理该消息。你可以使用注释指定MDB监听哪一个目标地址。当MDB部署时,容器将读取其中的配置信息。
分享到:
相关推荐
Java+Message+Service+JMS+java消息服务
本教程向您介绍了 Java 消息服务(Java Message Service,JMS)概述,并提供了使用它开发程序的基本知识。Sun Microsystems 开发 JMS 是为 Java ?程序访问企业消息传递系统、也称面向消息的中间件(MOM)提供一种...
关于JMS的消息服务的代码,包括PTP和Pub/Sub,简单通俗 易懂。
JMS : Java Message Service (Java消息服务)1 引言 1.1 编写目的 1.2 名词解释
java message service
JMS ,java message service 消息中间件开源项目幻灯片
Java Message Service (JMS)使用手册
Java 语言的客户端和Java 语言的中间层服务必须能够使用这些消息系统。JMS 为Java 语言程序提供了一个通用的方式来获取这些系统。 JMS 是一个接口和相关语义的集合,那些语义定义了JMS 客户端如何获取企业消息产品 ...
JSR-000343 Java Message Service 2.0 javadocs for Evaluation.官网下载的,放在这里共享
OReilly - Java Message Service 2nd Edition Jun 2009 原书代码,来自官网,免费分享
Java消息服务(Java Message Service,JMS)是一组Java应用程序接口(Java API),它提供创建、发送、接收、读取消息的服务。由Sun公司和它的合作伙伴设计的JMS API定义了一组公共的应用程序接口和相应语法,使得Java...
JMS(Java Message Service)是访问企业消息系统的标准API,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。
java message service 第二版 非常不错的 JMS 资料
[Java.Message.Service(2nd,2009.5)].Mark.Richards.文字版.pdf
java消息服务(Java Message Service)即JMS,是一个Java平台中关于面向消息中间件的api,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信 什么是AMQP AMQP(advanced message queuing protocol)是一...
Java Message Service 原文翻译的中文版,描述了JMS消息传递的规范
《Java Message Service》 PDF英文版本下载