Java Message Service 总结

 

 

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值