`
JFires
  • 浏览: 41728 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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----发生消息应用的ID
  • JMSXConsumerTXID----消费这条消息的事务ID
  • JMSXDeliveryCount----消息参与投递的次数
  • JMSXGroupID----该消息所属的消息组
  • JMSXGroupSeq----该消息在消息组中所处的序列
  • JMSXProducerTXID----生产这条消息的事务ID
  • JMSXRcvTimestamp----JMS提供者将消息投递给消费者的时间
  • JMSXState----用来定义提供者指定的状态
  • JMSXUserID----发送这条消息的用户

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

提供者指定属性

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

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

1
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics