JMS2.0规范中文版

JMSCorrelationID

客户端可以使用JMSCorrelationID头字段关联一个消息到另一个消息。

客户端可以使用的JMSCorrelationID头字段与另一个连接一个消息。典型的用法是关联一个响应消息到它对应的请求消息。

JMSCorrelationID可以使用如下几种值:

  • 一个提供程序特定的消息ID
  • 应用程序特定的字符串
  • 一个提供本地的byte []的值。

由于通过JMS提供者发送的每条消息都分配有一个消息ID值,所以可以很方便地通过消息ID来关联消息。所有的消息ID值必须以“ID:”作为前缀。

在某些情况下,应用程序(由多个客户端组成的),需要使用应用特定的值关联消息。例如,一个应用程序可以使用JMSCorrelationID的值引用一些外部信息。应用程序指定的值必须不能使用“ID:”的前缀;这个前缀是为提供者生成的消息ID值保留的。

如果一个提供者支持相关ID(correlation ID)的原生概念,JMS客户端可能需要使用特定的JMSCorrelationID值,以满足那些期望使用它的非JMS客户端。为了这个目的,我们可以为JMSCorrelationID使用一个byte []类型的值。没有原生的相关ID值的JMS提供者不要求支持byte[]类型的JMSCorrelationID值1。使用byte []类型的JMSCorrelationID值是不可移植的。


注1:方法 setJMSCorrelationIDAsBytes()和getJMSCorrelationIDAsBytes()的实现可能抛出java.lang.UnsupportedOperationException异常。