42.4.3. 设置 JMS 属性


摘要

使用使用者端点中的请求上下文,您可以设置多个 JMS 消息标头属性和消费者端点的超时值。这些属性可用于单一调用。每次调用服务代理时都必须重置它们。

请注意,您无法在服务中设置标头属性。

JMS 标头属性

表 42.4 “table JMS 标头属性” 列出 JMS 标头中使用消费者端点的请求上下文设置的属性。

表 42.4. table JMS 标头属性
属性名称属性类型设置方法

关联 ID

字符串

setJMSCorralationID()

交付模式

int

setJMSDeliveryMode()

优先级

int

setJMSPriority()

生存时间

long

setTimeToLive()

设置这些属性请执行以下操作:

  1. 创建 org.apache.cxf.transports.jms.context.JMSMessageHeadersType 对象。
  2. 使用 表 42.4 “table JMS 标头属性” 中描述的适当设置方法填充您要设置的值。
  3. 通过将 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 标头中添加可选属性,请执行以下操作:

  1. 创建 JMSPropertyType 对象。
  2. 使用 setName () 设置属性的 name 字段。
  3. 使用 setValue () 设置属性的 value 字段。
  4. 使用 JMSMessageHeadersType.getProperty ().add (JMSPropertyType),将 属性添加到 JMS 消息标头中。
  5. 重复这个过程,直到所有属性都添加到邮件标头中。

客户端接收超时

除了 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 秒。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.