16boke - 一路博客

标签:消息中间件

共 16 篇文章

JMS应用服务器工具

8.1 概述本章描述用于并发处理订阅消息的JMS工具。也定义了JMS提供商如何支持JTS可感知的会话。这些工具主要由JMS提供商使用。如果JMS客户端使用JTS可感知工具来进行客户端编程,则它可能是不可移植的,因为不要求JMS提供商支持这些接口。在本章中描述的工具是JMS的一个特殊类别。它们是可选的,可能只有部分JMS提供商对它们提供支持。8.2 并发处理订阅的消息JMS提供了一个特殊的工具用于创建MessageConsumer,它可以并发的消费消息。这个工具将这项工作分成三个角色:• JMS提供商——用于转发消息。• 应用服务器——用于创建消费者和管理由并发MessageListe

阅读全文

JMS异常

7.1 概述本章对JMS异常处理做了概述并定义了标准的JMS异常。7.2 JMSExceptionJMS定义了JMSException作为JMS方法抛出的异常的根类。JMSException是一个受检查异常,捕捉它就可以处理所有JMS相关的异常。JMSException提供了下面的信息:• 提供商特有的描述错误的字符串——这个字符串是标准的java异常消息,可用getMessage()获得这个消息。• 提供商特有的字符串型错误代码。• 对另一个异常的引用———一个JMS异常通常是由底层问题引起。如果合适,底层异常可以被关联到JMS异常。JMS方法在它们的标识符中只包含JMSExcep

阅读全文

JMS发布/订阅模型

6.1 概述JMS Pub/Sub模型定义了JMS客户端如何发布消息到基于内容层次的众所周知的节点和如何从节点订阅消息。JMS 将这些节点称为主题(topic)。在这一节,术语publish和subscribe用于替代前面更常用的术语produce和consume。注意可以被看作是一个小的消息代理,它收集和分发定位到它的消息。通过依靠主题作为中介,消息发布者和订阅者保持独立。主题随着发布者和订阅者的变化而自动适配。当代表它们的Java对象存在时,发布者和订阅者是活动的。JMS 也支持可选的永久订阅者,这些订阅者在不活动时也会被记住是存在的。本章描述Pub/Sub模型的语义。支持Pub

阅读全文

JMS点对点模型

5.1 概述点对点系统是与消息队列一起工作的。它们是点对点的是因为客户端将消息发送到一个队列。某些PTP 系统通过给客户端提供自动分发消息功能模糊了PTP和Pub/Sub间的差别。对客户端来讲,通常是将它们的消息转发到单个队列中。和常见的邮件箱一样,队列可以包含混合消息。但类似于实际的邮件箱,创建和维护每个队列的成本都是很高的。大多数队列都由管理员创建,并被客户端看作是静态资源。JMS PTP模型定义了客户端如何和队列工作;如何找到队列,客户端如何将消息发送给它们,以及如何从队列中接收消息。本章描述了PTP模型的语义。支持PTP模型的JMS提供商必须实现这里描述的语义。不管JMS客户

阅读全文

JMS Session对象

JMS Session是一个单线程的上下文(对能够使用会话对象或它创建的线程的数量没有限制。限制是会话的资源不应当被多个线程并发使用。这由用户来保证满足这个限制。最简单的方式是使用一个线程。在异步转发的情况下,使用一个线程来设置停止模式然后启动异步转发。在更复杂的情况下,用户必须提供显式的同步。),用于生产和消费消息。尽管会话可以给提供商分配JVM外部的资源,但是它被看作是轻量JMS 对象。Session用于几个目的:• 它是MessageProducer和MessageConsumer的工厂。• 它是TemporaryTopic和TemporaryQueue的工厂。• 它为需要动态

阅读全文

JMS Connection对象

JMS Connection是一个客户端到JMS提供商间的活动连接。它通常分配在Java虚拟机外部的提供商的资源。Connection对象支持并发使用。Connection用作几个目的:• 它封装了一个与JMS提供商的连接。他通常代表一个在提供商服务域和客户端间的打开的TCP/IP Socket。• 在客户端授权时创建它。• 它可以指定一个唯一的客户端标识。• 它创建Session对象。• 它提供ConnectionMetaData。• 它支持可选的ExceptionListener。由于在创建Connection时设置授权和通讯,因此Connection相对是重量级的JMS对象。大

阅读全文

JMS受管理的对象

JMS受管理的对象是那些包含JMS配置信息的对象,这些配置信息由JMS管理员创建然后由客户端使用。它们实际管理企业中的JMS应用。尽管受管理对象的接口不显式的依赖JNDI,但JMS为了JMS客户端通过JNDI查找的方便而设置了这个方便性。管理员可以将受管理对象放到命名空间的任何位置。JMS没有定义命名策略。区分JMS和管理提供了几个好处:• 它对客户端隐藏了提供商特有的配置信息。• 他将JMS可管理的信息抽象成容易被通用管理控制台组织和管理的java对象。• 由于有JNDI提供商提供所有流行的命名服务,那么这意味着JMS提供商可以转发一个受管理对象的实现,这些对象可以运行在任何地方。

阅读全文

JMS消息体

JMS提供了五种形式的消息体。每种形式都由一个消息接口来定义:• StreamMessage——消息体包含的是java原始值流。它连续的填充和读。• MapMessage——消息体包含一系列名字‐值对儿,其中名字是String,值是Java原始类型。条目可以被枚举器连续获取也可以按名字随机获取。条目的顺序没有定义。• TextMessage——消息体包含的是java.lang.String。这个消息类型是基于一个假设:String消息被广泛的使用。这是因为XML很可能变成一个代表JMS消息内容的流行机制。• ObjectMessage——消息包含了可序列化的Java对象。如果需要ja

阅读全文

消息选择

许多消息应用需要过滤和分类它们生产的消息。在消息被发送到单个接收者的情况下,通过将标准放入消息中并在接收客户端丢弃它不感兴趣的消息来实现。当消息被广播到许多客户端时,将选择标准放入消息头中是非常有用的,这样JMS提供商就可以知道这些标准。这样提供商就可以处理更多的过滤和路由工作,否则就需要应用来做这些工作。JMS提供了让客户端将消息选择代理给JMS提供商的功能。这简化了客户端的工作,也可以让JMS 提供商减少时间和带宽,否则它们将会将客户端不需要的消息发送给客户端。客户端使用消息属性将应用专有的选择标准附加到消息中。客户端用消息选择器表达式来指定消息选择标准。3.8.1 消息选择器J

阅读全文

消息属性

除了这里定义的头字段外,Message接口有一个内置的功能,这个功能支持属性值。这个功能为消息增加可选头字段提供了一种机制。属性可以让客户端通过消息选择器(参见章节3.8“消息选择”)来让JMS提供商根据应用特有的规则来选择消息。3.5.1 属性名属性名必须遵循消息选择器标识的规则。参见章节3.8.1.1“消息选择器语法”了解更详细信息。3.5.2 属性值属性的值可以是boolean,byte,short,int,long,float,double和String。3.5.3 属性的使用在发送消息之前设置属性值。当客户端接收到一个消息时,它的属性是只读模式。如果 客户端企图修改属性,那

阅读全文