42.4.3. 设置 JMS 属性
JMS 标头属性
表 42.4 “table JMS 标头属性” 列出 JMS 标头中使用消费者端点的请求上下文设置的属性。
属性名称 | 属性类型 | 设置方法 |
---|---|---|
关联 ID |
|
|
交付模式 |
|
|
优先级 |
|
|
生存时间 |
|
|
-
创建
org.apache.cxf.transports.jms.context.JMSMessageHeadersType
对象。 - 使用 表 42.4 “table JMS 标头属性” 中描述的适当设置方法填充您要设置的值。
-
通过将 org.apache.cxf.transports.jms.JMSConstants.JMS_CLIENT_REQUEST_HEADERS 调用请求上下文,并将新的
JMSMessageHeadersType
对象用作第二个参数,将值设置为请求上下文。
可选 JMS 标头属性
您还可以将可选属性设置为 JMS 标头。可选的 JMS 标头属性存储在用于设置其他 JMS 标头属性的 JMSMessageHeadersType
对象中。它们存储为包含 org.apache.cxf.transports.jms.context.JMSPropertyType
对象的 List
对象。要在 JMS 标头中添加可选属性,请执行以下操作:
-
创建
JMSPropertyType
对象。 -
使用
setName ()
设置属性的 name 字段。 -
使用
setValue ()
设置属性的 value 字段。 -
使用
JMSMessageHeadersType.getProperty ().add (JMSPropertyType)
,将 属性添加到 JMS 消息标头中。 - 重复这个过程,直到所有属性都添加到邮件标头中。
客户端接收超时
除了 JMS 标头属性外,您还可以设置消费者端点在超时前等待响应的时间。您可以通过使用 org.apache.cxf.transports.jms.JMSConstants.JMS_CLIENT_RECEIVE_TIMEOUT 调用请求上下文的 put ()
方法以毫秒为单位来设置值。
示例
例 42.15 “使用 Request 上下文设置 JMS 属性” 显示使用请求上下文设置某些 JMS 属性的代码。
例 42.15. 使用 Request 上下文设置 JMS 属性
import org.apache.cxf.transports.jms.context.*; // Proxy greeter initialized previously InvocationHandler handler = Proxy.getInvocationHandler(greeter); BindingProvider bp= null; if (handler instanceof BindingProvider) { bp = (BindingProvider)handler; Map<String, Object> requestContext = bp.getRequestContext(); JMSMessageHeadersType requestHdr = new JMSMessageHeadersType(); requestHdr.setJMSCorrelationID("WithBob"); requestHdr.setJMSExpiration(3600000L); JMSPropertyType prop = new JMSPropertyType; prop.setName("MyProperty"); prop.setValue("Bluebird"); requestHdr.getProperty().add(prop); requestContext.put(JMSConstants.CLIENT_REQUEST_HEADERS, requestHdr); requestContext.put(JMSConstants.CLIENT_RECEIVE_TIMEOUT, new Long(1000)); }
例 42.15 “使用 Request 上下文设置 JMS 属性” 中的代码执行以下操作:
获取用于其 JMS 属性更改的代理的 InvocationHandler
。
检查 InvocationHandler
是否为 BindingProvider
。
将返回的 InvocationHandler
对象转换为 BindingProvider
对象,以检索请求上下文。
获取请求上下文。
创建一个 JMSMessageHeadersType
对象来保存新的消息标头值。
设置正确 ID。
将 Expiration 属性设为 60 分钟。
创建新的 JMSPropertyType
对象。
设置可选属性的值。
将可选属性添加到消息标头中。
将 JMS 消息标头值设置为请求上下文。
将客户端接收超时属性设置为 1 秒。