JMS简明教程(PDF格式)-第17部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
为了解包ObjectMessage,使用ObjectMessage。getObject 方法来得到对象。一旦对象被
取出,客户端应用使用与对象类型匹配的方法从对象中取出数据。
StockObject stockObject;
/* Retrieve the StockObject from the message */
stockObject = (StockObject)message。getObject();
/* Extract data from the StockObject by using StockObject methods */
String stockName; /* Name of the stock quote */
double stockValue; /* Current value of the stock */
long stockTime; /* Time of the stock update */
double stockDiff; /* +/hange in the stock quote */
64 / 66
…………………………………………………………Page 65……………………………………………………………
String stockInfo; /* Information on this stock */
stockName = stockObject。getName();
stockValue = stockObject。getValue();
stockTime = stockObject。getTime();
stockDiff = stockObject。getDiff();
stockInfo = stockObject。getInfo();
10 问题
10。1 已解决的问题
10。1。1 JDK1。1。x 兼容性
JMS 兼容JDK1。1。x 。
10。1。2 分布式Java 事件模型
一般情况下,JMS 可以被用作通知服务;但是它没有定义java 事件的分布版本。
实现分布式Java 事件的一个替代方案是将事件作为JavaBean 通过JMS 透明地分发它,
这种分发对事件的生产者和监听器bean 是透明的。
10。1。3 可以合并JMS 的两个域PTP 和Pub/Sub 吗?
尽管有许多类似点,提供分离的域似乎仍然是重要的。
这意味着供应商不必支持超出域的那些工具,且产品完全支持一个域会使客户端代码有
更好的移植性(相对于对合并域的子集做比较少的支持)。
10。1。4 JMS 应当指定一个JMS JavaBean 集合吗?
JMS 是一个底层API ,和其它的Java 底层API 一样,它不直接作为JavaBean 出现。
10。1。5 与CORBA 通知服务对齐
通知服务增加了过滤、转发保证语义、永久连接和对 CORBA 事件服务的事件网络的组
装。它从CORBA 消息服务得到它的转发保证语义(这个服务定义了异步CORBA 方法调用)。
Java 技术可以和CORBA 很好的集成。它提供了Java IDL 和COS 命名。另外,OMG 最近
定义了基于IIOP 的RMI。
在Java 中期望通过RMI 来使用IIOP。希望通过JNDI 来使用COS 命名。JMS 是Java API ,
65 / 66
…………………………………………………………Page 66……………………………………………………………
它设计的目标是架构在现存的和将来的MOM 系统之上的一层API (就像JNDI 是位于现存的
命名和目录服务至上)。
10。1。6 JMS 应当提供端对端的同步消息转发和转发通知吗?
某些消息系统将向目的地同步转发作为实现可靠应用的机制来提供。某些系统向客户端
提供不同形式的转发通知来让客户端可以检测丢弃或忽略的消息。这都不是 JMS 定义的模
型。
JMS 通过PERSISTNECT 消息的一次只有一个的转发语义提供了转发保证。另外,消息消
费者通过使用CLIENT_ACKNOWLEDGE 模式或事务性会话可以保证消息的可靠处理。
这样就可以使用最小的同步达到可靠的转发,并且这是大多数供应商和开发者喜欢的企
业消息模型。
JMS 没有定义系统消息的模式(Schema )(例如转发通知)。如果应用需要对这些消息
接收进行确认,那么它可以定义应用级的消息确认。
当在Pub/Sub 应用的上下文中检验这些问题时,它们可以更好理解。在这个上下文中,
同步转发和/或接收的系统确认都不是实现可靠应用有效的机制(因为按照定义,生产者不
负责也不想负责端对端(End to End)的消息转发)。
10。1。7 JMS 应当提供发送到列表的机制吗?
目前,JMS 提供了大量的消息发送选项;但是消息一次只能被发送到一个目的地。
发送到列表的好处是简化了程序员的工作,且潜在地可以让 JMS 提供商优化向多个目
的地发送同一个消息。
发送到列表机制的缺点是列表效果上是客户端实现和维护的一个组。这复杂了 JMS 客
户端的管理。
JMS 提供发送到列表的机制的替代方案,推荐提供商支持代表一个组的目的地。这可以
让客户端只要一个发送就可以到达多个消费者,但要保证组受到妥善的管理。
10。1。8 JMS 应当提供订阅通知吗?
如果发布者能够检测到订阅者什么时候存在,那么它可以禁止想未订阅的主题上发布消
息。
尽管为发布者提供禁止向未订阅的主题上发布消息的机制有一些好处,但这将增加JMS
的复杂性,且它给提供商增加的工作量大于了它得到的好处。反而,JMS 提供商应当保证最
小化处理发布到未订阅主题的消息的负载。
11 变更历史
略。
66 / 66
………………………………………………………………………用户上传之内容结束……………………………………………………………………………………