IMessage

Message 对象表示应用程序发送或接收的消息。 IMessage 是诸如 IMapMessage 等消息类的超类。

继承层次结构:
IBM.XMS.IPropertyContext
   |
   +----IBM.XMS.IMessage

要获取 Message 对象中 JMS 消息头字段的列表,请参阅 XMS 消息的头字段。 有关 JMS 定义的 Message 对象属性的列表,请参阅 JMS 定义的消息属性。 有关 IBM® 定义的 Message 对象属性的列表,请参阅 IBM定义的消息属性。 有关 Message 对象的 JMS_IBM_MQMD* 属性的列表,请参阅 JMS_IBM_MQMD* 属性

消息由垃圾回收器进行删除。 删除消息时,将释放其使用的资源。

.NET 个属性

.NET 属性的摘要:
.NET 属性 描述
JMSCorrelationID 获取消息的相关标识并将其设置为 String 对象。
JMSDeliveryMode 获取和设置消息的传递方式。
JMSDestination 获取和设置消息的目标。
JMSExpiration 获取和设置消息的到期时间。
JMSMessageID 获取消息的消息标识,并将其设置为用于封装消息标识的 String 对象。
JMSPriority 获取和设置消息优先级。
JMSRedelivered 获取是否正在重新传递消息的指示,并指示是否正在重新传递消息。
JMSReplyTo 获取和设置要将消息应答发送到的目标。
JMSTimestamp 获取和设置消息发送时间。
JMSType 获取和设置消息类型。
PropertyNames 获取消息的名称属性的枚举。

GetJMSCorrelationID - 获取和设置 JMSCorrelationID

接口:
String JMSCorrelationID
{
  get;
  set;
}

获取消息的相关标识并将其设置为 String 对象。

异常:
  • XMSException

JMSDeliveryMode - 获取和设置 JMSDeliveryMode

接口:
DeliveryMode JMSDeliveryMode
{
  get;
  set;
}

获取和设置消息的传递方式。

消息的传递方式可为以下值之一:

  • DeliveryMode.Persistent
  • DeliveryMode.NonPersistent

对于尚未发送的新创建的消息,传递方式为 DeliveryMode.Persistent,但与代理程序的实时连接除外,其传递方式为 DeliveryMode.NonPersistent。 对于已收到的消息,此方法将返回由 IMessageProducer.send() 调用在发送消息时设置的传递方式,除非接收应用程序通过设置 JMSDeliveryMode 更改了传递方式。

异常:
  • XMSException

JMSDestination - 获取和设置 JMSDestination

接口:
IDestination JMSDestination
{
  get;
  set;
}

获取和设置消息的目标。

目标是由 IMessageProducer.send() 调用在发送消息时设置的。 将忽略 JMSDestination 的值。 但是,可以使用 JMSDestination 来更改已接收的消息的目标。

对于尚未发送的新创建的消息,此方法将返回空的 Destination 对象,除非发送应用程序通过设置 JMSDestination 设置了目标。 对于已收到的消息,此方法将针对由 IMessageProducer.send() 调用在发送消息时设置的目标返回 Destination 对象,除非接收应用程序通过设置 JMSDestination 更改了目标。

异常:
  • XMSException

JMSExpiration - 获取和设置 JMSExpiration

接口:
Int64 JMSExpiration
{
  get;
  set;
}

获取和设置消息的到期时间。

到期时间是由 IMessageProducer.send() 调用在发送消息时设置的。 其值的计算方式为:在消息发送时间上加上发送应用程序所指定的生存时间。 到期时间将以自 1970 年 1 月 1 日格林威治标准时间 00:00:00 起的毫秒数表示。

对于尚未发送的新创建的消息,到期时间为 0,除非发送应用程序通过设置 JMSExpiration 设置了不同的到期时间。 对于已收到的消息,此方法将返回由 IMessageProducer.send() 调用在发送消息时设置的到期时间,除非接收应用程序通过设置 JMSExpiration 更改了到期时间。

如果生存时间为 0,那么 IMessageProducer.send() 调用会将到期时间设置为 0,以指示此消息不会到期。

XMS 会废弃已到期的消息,并且不会将这些消息传递到应用程序。

异常:
  • XMSException

JMSMessageID - 获取和设置 JMSMessageID

接口:
String JMSMessageID
{
  get;
  set;
}

获取消息的消息标识,并将其设置为用于封装消息标识的 String 对象。

消息标识是由 IMessageProducer.send() 调用在发送消息时设置的。 对于已收到的消息,此方法将返回由 IMessageProducer.send() 调用在发送消息时设置的消息标识,除非接收应用程序通过设置 JMSMessageID 更改了消息标识。

如果消息没有消息标识,那么此方法将返回空值。

异常:
  • XMSException

JMSPriority - 获取和设置 JMSPriority

接口:
Int32 JMSPriority
{
  get;
  set;
}

获取和设置消息优先级。

优先级是由 IMessageProducer.send() 调用在发送消息时设置的。 该值是范围 0(表示最低优先级)到 9(表示最高优先级)内的整数。

对于尚未发送的新创建的消息,优先级为 4,除非发送应用程序通过设置 JMSPriority 设置了不同的优先级。 对于已收到的消息,此方法将返回由 IMessageProducer.send() 调用在发送消息时设置的优先级,除非接收应用程序通过设置 JMSPriority 更改了优先级。

异常:
  • XMSException

JMSRedelivered - 获取和设置 JMSRedelivered

接口:
Boolean JMSRedelivered
{
  get;
  set;
}

获取是否正在重新传递消息的指示,并指示是否正在重新传递消息。 此指示是由 IMessageConsumer.receive() 调用在接收消息时设置的。

该属性具有以下值:

  • True(如果正在重新传递消息)。
  • False(如果未在重新传递消息)。

对于与代理程序的实时连接,该值始终为 False

IMessageProducer.send() 调用在发送消息时会忽略在发送消息之前由 JMSRedelivered 设置的重新传递指示,并且 IMessageConsumer.receive()调用在接收消息时会忽略和替换该指示。 但是,可以使用 JMSRedelivered 来更改已接收的消息指示。

异常:
  • XMSException

JMSReplyTo - 获取和设置 JMSReplyTo

接口:
IDestination JMSReplyTo
{
  get;
  set;
}

获取和设置要将消息应答发送到的目标。

该属性的值是一个 Destination 对象,用于表示要将消息应答发送到的目标。 空的 Destination 对象表示不期望收到应答。

异常:
  • XMSException

JMSTimestamp - 获取和设置 JMSTimestamp

接口:
Int64 JMSTimestamp
{
  get;
  set;
}

获取和设置消息发送时间。

此时间戳记是由 IMessageProducer.send() 调用在发送消息时设置的,并且将以从 1970 年 1 月 1 日格林威治标准时间 00:00:00 起的毫秒数表示。

对于尚未发送的新创建的消息,此时间戳记为 0,除非发送应用程序通过设置 JMSTimestamp 设置了不同的时间戳记。 对于已收到的消息,此方法将返回由 IMessageProducer.send() 调用在发送消息时设置的时间戳记,除非接收应用程序通过设置 JMSTimestamp 更改了时间戳记。

异常:
  • XMSException
备注信息:
  1. 如果未定义时间戳记,那么此方法将返回 0,但不抛出任何异常。

JMSType - 获取和设置 JMSType

接口:
String JMSType
{
  get;
  set;
}

获取和设置消息类型。

JMSType 的值是用于封装消息类型的字符串。 如果需要进行数据转换,那么该值是转换后的类型。

异常:
  • XMSException

PropertyNames - 获取属性

接口:
System.Collections.IEnumerator PropertyNames
{
  get;
}

获取消息的名称属性的枚举。

异常:
  • XMSException

方法

方法汇总:
方法 描述
确认 确认此消息以及会话先前接收到的所有未确认消息。
ClearBody 清除消息主体。
ClearProperties 清除消息属性。
PropertyExists 检查消息是否包含具有指定名称的属性。

Acknowledge - 确认

接口:
void  Acknowledge();

确认此消息以及会话先前接收到的所有未确认消息。

如果会话确认方式为 AcknowledgeMode.ClientAcknowledge,那么应用程序可以调用此方法。 如果会话采用任何其他确认方式或者属于事务性会话,那么将忽略此方法调用。

可能会重新传递已接收但未确认的消息。

有关确认消息的更多信息,请参阅 ../develop/xms_cmesack.html#xms_cmesack

参数:
None
返回:
Void
异常:
  • XMSException
  • IllegalStateException

ClearBody - 清除主体

接口:
void  ClearBody();

清除消息主体。 将不清除头字段和消息属性。

如果应用程序清除了消息主体,那么该主体的状态将与新创建消息中的空主体保持一致。 新创建消息中的空主体的状态取决于消息主体的类型。 有关更多信息,请参阅 XMS 消息的主体

无论消息主体处于何种状态,应用程序都可随时清除消息主体。 如果消息主体为只读,那么应用程序写入主体的唯一方式是应用程序先清除该主体。

参数:
None
返回:
Void
异常:
  • XMSException

ClearProperties - 清除属性

接口:
void  ClearProperties();

清除消息属性。 将不清除头字段和消息主体。

如果应用程序清除了消息属性,那么这些属性将变为可读且可写。

无论消息属性处于何种状态,应用程序都可随时清除消息属性。 如果消息属性为只读,那么属性变为可写的唯一方式是应用程序先清除这些属性。

参数:
None
返回:
Void
异常:
  • XMSException

PropertyExists - 检查属性是否存在

接口:
Boolean PropertyExists(String propertyName);

检查消息是否包含具有指定名称的属性。

参数:
propertyName(输入)
用于封装属性名称的 String 对象。
返回:
  • True(如果消息包含具有指定名称的属性)。
  • False(如果消息不包含具有指定名称的属性)。
异常:
  • XMSException