使用消息属性

可使用消息属性影响后续处理。

开始之前

在开始执行此任务之前,您应该阅读用于调解的消息属性支持 中提供的有关 SIMessage 接口所支持的属性的内容。

关于此任务

有两种不同类型的消息属性:
  • 系统属性(包括 JMS 头、JMSX 属性和 JMS_IBM_properties)
  • 用户属性。

可以使用消息属性来影响后续调解应该处理的消息,或者影响下游应用程序或调解执行的处理。配置调解期间在选择器字段中设置的规则将对消息属性中的值进行测试。

可以使用 SIMessage 接口来访问、修改和清除属性(请参阅 SIMessage)。有三个不同的方法集:

  • 下列属性作用于系统属性,并且,如果使用前缀 user. 对名称进行限定,那么还作用于用户属性:
    • getMessageProperty
    • setMessageProperty
    • deleteMessageProperty
    • clearMessageProperties
  • 下列属性仅作用于用户属性,而且不需要前缀 user.
    • getUserProperty
    • setUserProperty
    • deletUserProperty
    • clearUserProperties
  • getUserPropertyNames 返回消息中的用户属性名列表。
通常,在进行调解编程时,可以按以下方式使用消息属性:

过程

  1. 在调解处理程序的方法 handle (MessageContext context) 中找到要插入功能性调解代码的位置。接口为 MessageContext,并且,除非您只对 MessageContext 提供的方法感兴趣,否则应该对其进行数据类型转换以将其转换为 SIMessageContext。
  2. 从 MessageContext 对象中获取 SIMessage。例如,SIMessage message = ((SIMessageContext)context).getSIMessage();
  3. 按照与下列示例类似的方式来构建调解头函数(使用用于调解的消息属性支持中的参考信息来获取帮助):
    1. 获取消息的用户属性。例如,String task = (String)msg1.getUserProperty("task");。在这种情况下,任务字符串可以引用调解应该执行的操作。
    2. 设置用户属性,其中,消息属性是作为名称/值对存储的。setUserProperty 方法只能用来设置用户属性,因此,传递给此方法的名称不应该包括“user.”前缀。例如,msg1.setUserProperty("background","green");
    3. 从消息中删除用户属性。例如,msg1.deleteUserProperty("task");

示例

用于使用消息属性的调解函数代码可能与以下示例中的代码段类似:

    String task = (String)msg1.getUserProperty("task");
    if (task != null) {
      if (task.equals("addColor")) {
        msg1.setMessageProperty(SIProperties.JMS_IBM_Format, "colorful");
        msg1.setUserProperty("background","green");
        msg1.setUserProperty("foreground","purple");
        msg1.setUserProperty("depth",new Integer(3));
        msg1.deleteUserProperty("task");
      }
      else {
        msg1.clearUserProperties();
      }
    }     

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjy1504
文件名:tjy1504.html