您的位置:首页 > 编程语言 > Java开发

Java Message Service 总结

2010-07-04 15:54 375 查看

1.

Java Message Service

一、

概念

Java Message Service

Java
消息服务。当前规范版本为
JMS1.1

二、

消息传送机制的优点

1.

异构集成

使用消息桥集成不同类型的系统。另外一种方式为
RPC

Remote Procedure Call


2.

缓解系统瓶颈

由消息传送系统替代了点对点的阻塞调用

3.

提高可伸缩性

异步方式和消息队列深度

4.

提高最终用户生产率

5.

体系结构灵活和敏捷性

三、

体系结构

1.

集中式体系结构

星型拓扑、存在一个中央消息服务器

2.

分散式体系结构

网络层使用组播(客户端支持)

3.

混合式体系结构

四、

消息传送模型

1.

点对点(
P2P


2.

发布
/
订阅(
Pub/Sub


五、

JMS API

公共
I

P2P

Pub/Sub

ConnectionFactory

QueueConnectionFactory

TopicConnectionFactory

Connection

QueueConnection

TopicConnection

Destination

Queue

Topic

Message

Message

Message

MessageProducer

QueueSender

TopicPublisher

MessageConsumer

QueueReceiver

TopicSubscriber

六、

JMS
消息分析

JMS
消息分为消息头、属性、有效负载三部分

1.

消息头

(通过
Setter

Getter
指定)

(自动分配部分)

JMSDestination

消息目的地(
Queue

Topic


JMSDeliveryMode

传送模式(持久性或非持久传送)

JMSMessageID

消息的全局唯一标识

JMSTimestamp

时间戳,是
JMS
提供者接收消息的时间

JMSExpiration

消息的有效期

JMSRedelivered

该消息是否为重新传送

JMSPriority

优先级
0~4
普通,
5~9
加急

(开发者自行分配部分)

JMSReplyTo

消息应答目的地(
Destination


JMSCorrelationID

关联
ID
,辅助使用区分消息或顺序

JMSType

MOM
交互使用,并非指明
TextMessage

MapMessage


2.

消息属性

一般有开发者自行定义,如
String

Boolean
等类型。

3.

JMS
定义的属性(

X
开头
JMS
厂商可以选择不支持、部分支持或全部支持)

JMSXUserID

JMSXAppID

JMSProducerTXID

JMSConsumerTXID

JMSRcvTimestamp

JMSXDeliveryCount

JMSXState

JMSXGroupID

消息组
ID
,必须支持

JMSXGroupSeq

组中消息的序列号,必须支持

七、

消息类型

1.

Message

2.

TextMessage

3.

ObjectMessage

4.

BytesMessage

5.

StreamMessage

6.

MapMessage

八、

动态队列对受管队列

不同的队列都会造成内存等容量的消耗与性能的影响

动态队列:通过使用厂商特定
API
创建的队列

受管队列:在
JMS
提供者配置文件或管理工具中定义的队列

九、

订阅者(
Pub/Sub


1.

持久订阅者、非持久订阅者

2.

动态订阅者、受管订阅者

十、

消息过滤

十一、

消息事务

消息事务包括三方面:自主性(自包含实体)、保存并转发、消息确认

1.

消息确认模式

a)

AUTO_ACKNOWLEDGE

自动确认

b)

DUPS_OK_ACKNOWLEDGE

允许重复发送

c)

CLIENT_ACKNOWLEDGE

客户端自行确认,适合于消息组

2.

事务性消息

显式提交

3.

分布式事务

分布式事务通常使用两阶段提交(
two-phase commit

2PC
)处理。事务管理者使用
2PC
协议来协调全局事务中各种资源的相互作用。如果某种资源支持
2PC
协议,那它就只能参与一个全局事务。
2PC
协议通常使用开放组织(
The
Open Group
)开发的
eXtended
体系结构(
eXtended Architecture

XA
)。

关于
XA

eXtended Architecture
)请参考我的其他文章。

JMS
规范提供了下列
JMS
对象的
XA
版本:

XAConnectionFactory

XAQueueConnection

XAQueuceConnectionFactory

XAQueueSession

XASession

XATopicConnection

XATopicConnectionFactory

XATopicSession


JTA
一样,以上
API
开发者无需使用。是由厂商来实现的。

十二、

设计、部署注意事项

1.

性能、可伸缩性和可靠性

2.

确定消息吞吐量需求

3.

内部目的地拓扑结构(由应用服务器管理的队列或主题)与外部目的地拓扑结构(在基于
Web
或基于服务器的应用程序上下文之外的专用系统上管理的队列和主题)

4.

消息的请求
/
应答

5.

消息传送设计反模式(如单用途队列、过度使用消息优先级、滥用消息头)

6.

反模式:可以重复但会产生负面效果的实践(与模式不同,后者产生的是正面效果)

十三、

流行的
MOM

1.

ActiveMQ http://activemq.apache.org

2.

IBM WebSphere MQ

3.

SonicMQ

4.

应用服务器:
JBoss

WebLogic

IBM WebSphere

Oracle AS
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: