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
)
相关文章推荐
- JMS : Java Message Service (Java消息服务)
- Java Service Wrapper工具把Java程序转换为Windows服务总结
- java webservice 之Axis2 WebServices总结
- Java Message Service - RabbitMQ
- Java webservice学习与总结
- JMS : Java Message Service (Java消息服务)
- JMS : Java Message Service (Java消息服务)之一
- Java Message Service :Spring POJO (MDP)与EJB3的Java Message Driven (MDB)
- JMS : Java Message Service (Java消息服务)
- Java Webservice调用总结
- Java Message Service 2(ActiveMQ)
- JMS : Java Message Service (Java消息服务)
- JMS : Java Message Service (Java消息服务)之二
- 简单的Java Message Service编程 和 EJB MDB
- Java Message Service version 2 :使用JMS完成pub/sub
- Java Message Service :Spring POJO (MDP)与EJB3的Java Message Driven (MDB)
- Java Service Wrapper使用总结
- 【转】gsoap/C++/C 与Axis/JAVA webservice互操作的若干问题总结及持续整理
- JMS : Java Message Service (Java消息服务)之三
- JAVA Message Service