首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

2.4JMS轨范(三)

2012-06-28 
2.4JMS规范(三)JMS提供者可选头部JMSRedelivered----用来指出一条消息被投递但没有收到应答的情况。这种情

2.4JMS规范(三)

JMS提供者可选头部

JMSRedelivered----用来指出一条消息被投递但没有收到应答的情况。这种情况可能是消费者应答失败,或者JMS提供者没有被通知到(例如异常发生使得应答消息没有到达JMS提供者)。

JMS消息属性

??? 属性是消息的一些简单的额外的头部。JMS提供通用的方法来设置自定义头部。这些通用方法提供对各种Java原始类型的支持,包括Boolean,byte,short,int,long,float,double及String对象。详情请看下面Message接口方法清单:

Listing 2.3 The JMS Message interface

public interface Message {
...
boolean getBooleanProperty(String name) throws JMSException;


byte getByteProperty(String name) throws JMSException;


short getShortProperty(String name) throws JMSException;


int getIntProperty(String name) throws JMSException;


long getLongProperty(String name) throws JMSException;


float getFloatProperty(String name) throws JMSException;


double getDoubleProperty(String name) throws JMSException;


String getStringProperty(String name) throws JMSException;


Object getObjectProperty(String name) throws JMSException;
...
Enumeration getPropertyNames() throws JMSException;


boolean propertyExists(String name) throws JMSException;
...


void setBooleanProperty(String name, boolean value) throws JMSException;


void setByteProperty(String name, byte value) throws JMSException;


void setShortProperty(String name, short value) throws JMSException;


void setIntProperty(String name, int value) throws JMSException;


void setLongProperty(String name, long value) throws JMSException;


void setFloatProperty(String name, float value) throws JMSException;


void setDoubleProperty(String name, double value) throws JMSException;


void setStringProperty(String name, String value) throws JMSException;


void setObjectProperty(String name, Object value) throws JMSException;


.. }

??? 有两个方法对所有属性有用,它们是getPropertyNames()和propertyExists()方法。getPropertyName()方法返回一个所有属性的Enumeration,这使得客户端可以很容易地遍历所有属性。propertyExists()方法是用来测试一个属性是否存在该消息中。注意这两个方法是对属性有用,那些JMS规范指定的头部(例如MessageID等)是不能用这两个方法来遍历或测试的。

??? 总之,现在有三种类型的属性,自定义属性,JMS定义属性,提供者指定属性。

自定义属性

?? 自定义属性是任意的,是由JMS应用定义的。应用开发者,可以通过下面的一些通用方法(getBooleanProperty()/
setBooleanProperty(), getStringProperty()/setStringProperty()等)来定义各种使用java类型的属性。

JMS定义属性

??? JMS规范保留了“JMSX”作为属性名前缀。下面是一些定义了的属性,这些属性都是可选的。

JMSXAppID----发生消息应用的IDJMSXConsumerTXID----消费这条消息的事务IDJMSXDeliveryCount----消息参与投递的次数JMSXGroupID----该消息所属的消息组JMSXGroupSeq----该消息在消息组中所处的序列JMSXProducerTXID----生产这条消息的事务IDJMSXRcvTimestamp----JMS提供者将消息投递给消费者的时间JMSXState----用来定义提供者指定的状态JMSXUserID----发送这条消息的用户

??? JMS规范只对JMSXGroupID和JMSXGroupSeq这两个属性的用法提供了建议。这两个属性可以用在消息分组/带顺序的消息分组。

提供者指定属性

??? JMS预留了JMS_<vendor-name>属性前缀作为提供者指定属性。提供者用这个前缀定义自己的属性。这些属性一般用在提供者指定的非JMS客户端,并且不能用在JMS-to-JMS消息传送中。

??? 现在JMS的头部和属性已经讨论完了。头部和属性对于预订了消息的客户端很重要,它可以用来帮助过滤消息。

热点排行