友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

JMS简明教程(PDF格式)-第12章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




有消息服务。  

   提供商专有属性的目的是为提供商本地客户端提供特殊功能。他们不应当用于JMS 。  



                                                                23 / 66  

  


…………………………………………………………Page 24……………………………………………………………

                                    



3。6  消息确认  



    当客户端指定JMS 消费者的消息要显式地被确认时,所有的JMS 消息使用acknowledge 

方法来确认消息。  

    如果客户端使用自动确认,那么忽略对确认方法的调用。  

   参见4。4。11 章节“消息确认”了解更详细的信息。  



3。7  Message 接口  



    Message  接口是所有 JMS  消息的根接口。它定义了 JMS         消息头字段、属性工具和 

acknowledge 方法。  



3。8  消息选择  



   许多消息应用需要过滤和分类它们生产的消息。  

   在消息被发送到单个接收者的情况下,通过将标准放入消息中并在接收客户端丢弃它不 

感兴趣的消息来实现。  

    当消息被广播到许多客户端时,将选择标准放入消息头中是非常有用的,这样 JMS  提 

供商就可以知道这些标准。这样提供商就可以处理更多的过滤和路由工作,否则就需要应用 

来做这些工作。  

   JMS 提供了让客户端将消息选择代理给JMS 提供商的功能。这简化了客户端的工作,也 

可以让JMS 提供商减少时间和带宽,否则它们将会将客户端不需要的消息发送给客户端。  

   客户端使用消息属性将应用专有的选择标准附加到消息中。客户端用消息选择器表达式 

来指定消息选择标准。  



3。8。1 消息选择器  



   JMS 消息选择器让客户端通过消息头指定它感兴趣的消息。只有头和属性匹配了选择器 

的消息才会被转发。“不转发”的语义随着使用的MessageConsumer 的不同而有所不同。参 

见5。8 章节“QueueReceiver ”和6。11 章节“TopicSubscriber ”了解更详细的信息。  

    消息选择器不能引用消息体内的值。  

    当消息头字段和属性值与它们在选择器中对应的标识符匹配时,如果选择器计算值为 

true ,那么消息选择器匹配了一个消息。  



3。8。1。1 消息选择器语法  



    消息选择器是一个String,它的语法是SQL92 条件表达式语法的子集。(注:参见X/Open  

CAE 规范数据管理:结构化查询语言(SQL ),版本2,ISBN:1�85912�151�9 1996 年3 月)  

    如果消息选择器的值是空串,那么值被看作是null,表示消息消费者没有消息选择器。  

    消息选择器的计算顺序是从左到右。圆括号可以改变这个顺序。  

   预定义的选择器文法和操作符名字用大写字符出现在这里;但是它们是大小写敏感的。  



                                                                24 / 66  

  


…………………………………………………………Page 25……………………………………………………………

                                       



    选择器可以包含:  

    z  文法  

          字符串用单引号括起来,在字符串内出现的单引号使用两个单引号表示(即用 

           单引号做转义符);例如’literal’和’literal’’s’ 。类似java  的String 文法,它们使用 

           Unicode 字符编码。  

          精确数值文法是没有小数点的数值,例如 57,�957,+62 ;支持Java                  的 long 

           取值范围。精确数值文法使用java  的Integer 文法语法。  

          近似数值文法是科学计数法,例如7E3 和�57。9E2,或带小数的数值,例如7。, 

           �95。7 和+6。2 ;支持double 的取值范围。近似数值文法使用java 浮点数文法语 

           法。  

          布尔文法是TRUE 和FALSE。  

    z  标识符  

          标识符是无限长的字符串,它必须以 java             标识符开始字符开头;下述的所有 

           字符必须是java  的标识符局部字符(part character )。标识符开头字符可以是 

           方法Character。isJavaIdentifierStart 返回true 的任何字符。包括’_’和’’ 。标识符 

           局部字符是方法Character。isJavaIdentifierPart 返回true 的任何字符。  

          标识符不能是NULL,TRUE 或FALSE。  

          标识符不能是NOT,AND ,OR,BETWEEN,LIKE,IN,IS 或ESCAPE。  

          标识符可以是头字段引用或属性引用。消息选择器中的属性值类型与用于设置 

           属性的类型一致。如果引用了消息中不存在的属性,那么它的值是 NULL。在 

           选择器重NULL 值的计算在节3。8。1。2  “Null 值”描述。  

          应用到属性get 方法的转换不应用到那些消息选择器表达式使用的属性。例如, 

           假 定 你 为 一 个 属 性 设 置 了 字 符 串 值 , 如 下 : 

           myMessage。setStringProperty(“NumberOfOrders”;”2”);那么下面的在消息选择器 

           中的表达式计算值将是 false ,因为字符串不能用在数学表达式 

           中:”NumverOfOrders 》 1”  

          标识符是大小写敏感的。  

          消息头字段引用仅限于 JMSDeliveryMode ,JMSPriority ,JMSMessageID , 

           JMSTimestamp ,JMSCorrelationID 和JMSType 。JMSMessageID ,JMSCorrelationID 

           和JMSType 值可以是null,且如果是null 则被看作是NULL 值。  

          任何以“JMSX ”开头的名字是JMS 定义的属性名。  

          任何以“JMS_ ”开头的名字是提供商专有的属性名。  

          任何不以“JMS ”开头的名字是应用专有的属性名。  

    z   空格和Java 定义的一样:空格,水平tab ,格式填充符(form feed )和行结束符。  

    z  表达式:  

          选择器是条件表达式;选择器计算为true 则匹配,计算为false 获未知则不匹 

           配。  

          算术表达式由算术表达式,算术运算符,值是数值的标识符和数值文法组成。  

          条件表达式由条件表达式,比较运算符,逻辑运算符,值是布尔的标识符和布 

           尔文法组成。  

    z   用于改变表达式计算的顺序。  

    z  逻辑运算符的顺序优先级:NOT,AND ,OR  

    z   比较运算符:=,》,》=,
返回目录 上一页 下一页 回到顶部 赞(1) 踩(1)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!