在消息处理器中启用字符串重复信息删除

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

本文档介绍如何在 Apigee Edge 的消息处理器上启用字符串去重。

字符串重复信息删除是一项 Java 功能,可帮助您节省 Java 应用中的重复字符串对象占用的内存。它通过使重复或相同的字符串值共享相同的字符数组,减少了 Java 堆内存中字符串对象的内存占用量。

Apigee Edge Message Processor 是一个基于 Java 的组件。在消息处理器中使用字符串重复信息删除功能可以减少内存用量,从而提高 API 代理的性能,尤其是在 API 代理大量使用字符串的情况下。

字符串重复信息删除功能只能与 Java 应用中的 G1 垃圾回收器 (G1GC) 搭配使用。如果要在消息处理器上启用此功能,则需要在消息处理器上启用 G1GC 或同时启用 G1GC 和字符串重复信息删除。

准备工作

在消息处理器上启用字符串重复信息删除

本部分介绍如何在边缘消息处理器上启用字符串重复信息删除功能。您可以通过消息处理器组件上的属性 useStringDeduplication 启用字符串去重。默认情况下,在消息处理器上,此属性会设为 false。如需配置消息处理器上的任何属性,请按照如何配置 Edge 中所述的语法使用令牌。

如需在消息处理器上启用字符串重复信息删除,请执行以下步骤:

  1. 找到 useStringDeduplication 属性的令牌
  2. 在消息处理器上启用 useStringDeduplication

找到 useStringDeduplication 属性的令牌

以下步骤介绍了如何查找 useStringDeduplication 的令牌:

  1. 使用以下命令在消息处理器源目录 /opt/apigee/edge-message-processor/source 中搜索 useStringDeduplication 属性:
    grep -ri "useStringDeduplication" /opt/apigee/edge-message-processor/source
    
  2. 此命令的输出会显示消息处理器属性 useStringDeduplication 的令牌,如下所示:
    /opt/apigee/edge-message-processor/source/conf/system.properties:useStringDeduplication={T}conf_system_useStringDeduplication{/T}
    

    其中,{T}{/T} 标记之间的字符串是您可以在消息处理器的 .properties 文件中设置的令牌的名称。因此,属性 useStringDeduplication 的令牌如下所示:

    conf_system_useStringDeduplication
    

在消息处理器上启用字符串重复信息删除

以下步骤介绍了如何在 Apigee 消息处理器上启用字符串去重:

  1. 使用编辑器打开消息处理器机器上的 /opt/apigee/customer/application/message-processor.properties 文件。如果该文件尚不存在,则创建该文件。 例如:
    vi /opt/apigee/customer/application/message-processor.properties
    
  2. 在此文件中添加以下代码行:
    conf_system_useStringDeduplication=true
    
  3. 保存您的更改。
  4. 请确保此属性文件归 apigee 用户所有。例如:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. 使用以下命令重启消息处理器:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. 如果您有多个消息处理器,请在所有消息处理器上重复执行这些步骤。

验证消息处理器上的字符串重复信息删除

本部分介绍如何验证是否已在消息处理器上成功启用字符串重复信息删除。

即使您使用令牌 conf_system_useStringDeduplication 在消息处理器上启用字符串重复信息删除,也需要验证实际属性 useStringDeduplication 已使用新值设置,如下所示:

  1. /opt/apigee/edge-message-processor/conf 目录中搜索属性 useStringDeduplication,并检查其是否已使用新值进行设置。例如:
    grep -ri "useStringDeduplication" /opt/apigee/edge-message-processor/conf
    
  2. 如果在消息处理器上成功启用了字符串重复信息删除,则上一条命令会在 system.properties 文件中显示新值。

    在消息处理器上启用字符串重复信息删除后,上一条命令的示例结果如下所示:

    /opt/apigee/edge-message-processor/conf/system.properties:useStringDeduplication=true
    

    请注意,在示例输出中,属性 useStringDeduplication 已使用 system.properties 中的新值 true 进行设置。这表示已成功在消息处理器上启用字符串重复信息删除。

  3. 如果您仍然看到属性 useStringDeduplication 的旧值,请验证是否已正确执行在消息处理器上启用字符串重复信息删除中所述的所有步骤。如果您遗漏了任何步骤,请重新正确重复所有步骤。
  4. 如果您仍无法启用字符串重复信息删除功能,请与 Apigee 支持团队联系。

下一步该做什么?

在消息处理器上启用 G1GC