优化消息流响应时间

开始之前:

阅读有关消息流节点的概念主题。

设计消息流时,内置节点的灵活性和丰富性通常表示存在多种方法可完成处理并由此获得所需的最终结果。但是,您还可以发现这些不同的解决方案所传递的性能不同的,如果这是重要的注意事项,您必须在设计时不光要考虑功能还要考虑性能。

有两种方法可以让您的应用程序了解性能:

  1. 响应时间。这表明消息流能多快地处理各条消息。这受您如何设计您的消息流的影响很大。这在本主题中有进一步的讨论。
  2. 吞吐量。这表明在给定时间内消息流能处理多少条特定大小的消息。主要受配置和系统资源因素的影响,因此在优化消息流吞吐量中与其他域配置信息一起进行了讨论。

有几个方面的因素影响消息流响应时间。但是,当您创建和修改您的消息流设计以得到满足您特定的商务需求的最佳的结果时,还必须考虑到最终的消息流的复杂程度。最高效的消息流不一定是最容易理解和维护的消息流;可对可用解决方案进行尝试以找到最符合您需求的解决方案。

会影响消息流响应时间的几种因素包括:

您在消息流中包含的节点个数
每个节点需要一些处理开销,因此请仔细考虑消息流的内容(包括子流的用法)。

在消息流中使用尽可能少的节点;您在消息流中包含的每个节点都会增加代理中的开销。在单个流内节点的个数有上限。该限制受系统资源管理,特别是堆栈大小方面。

有关堆栈大小的更多信息,请参阅开发消息流的系统注意事项

消息流如何路由和处理消息
在某些情况下,您会发现,系统中可用的内置节点以及可能有的其他节点提供了不止一种方法来实现同一功能。尝试选择最简单的配置。例如,根据每条消 息中字段的值,如果您要定义某些特定处理,可能会设计一个消息流,其中有一个用于处理每种情况的 Filter 节点的序列。如果合适,您可在处理消息之前通过 Filter 节点对消息进行分组以减少每种消息类型必须传递的消息数量。

例如,您可能有一消息流,它处理八种不同的消息(发票、派送注意事项,等等)。您可以包含 Filter 节点以识别消息的每种类型,并根据它的类型来路由它。您可通过在最前面的 Filter 节点中测试最常用的消息类型来优化此技术的性能。但是,第八种消息类型必须总是经过八个 Filter 节点。

如果您可以分组消息类型(例如,如果消息类型为数字,且您能测试所有类型是大于四还是不大于四),则可以减少所需的 Filter 节点数。第一个 Filter 节点测试是否大于四,并将消息传递到两个进一步的 Filter 节点(连接到 true 和 false 终端),这两个节点分别测试是否小于二和小于六。然后,另外四个 Filter 节点可以测试一或二,三或四,等等。尽管需要的 Filter 节点的实际数字是相同的,但每条消息经过的节点数减少了。

您可能会发现使用带一组 Label 节点的 RouteToLabel 节点提供了代替 Filter 节点序列的更好方法。每条消息经过的节点数更少,吞吐量便会提高。但是,您也必须考虑到使用 RouteToLabel 节点就表示要使用 Compute 节点:该节点的开销可能超过了它所带来的优点。 如果您处理有限数量的消息类型,较少的 Filter 节点数效率更高。

航空公司订票样本说明了您如何在 XML_PassengerQuery 消息流中不使用多个 Filter 节点而使用 RouteToLabel 和 Label 节点。消息路由样本说明了在消息流中将数据库表中的路由信息存储在内存高速缓存中。

如果您的消息流包含循环
避免重复节点的循环:这些循环效率将会是非常低的,且会引发性能和堆栈问题。您可能发现使用具有多个 PROPAGATE 语句的 Compute 节点可以避免使用一系列节点的循环。
ESQL 的效率
检查您为消息流节点创建的所有 ESQL 代码。当您开发和测试节点时,可能保留了您完成最终化消息处理时不需要的语句。您也可能会发现有些编码为两句语句的语句可编码为一句。花些时间复查和检查您的 ESQL 代码将会提供简化和性能改善。

如果您从前发行版导入了消息流,则根据 V5.0 中可用的 ESQL 检查您的 ESQL 语句,以查看是否可使用新的函数或语句来提高其效率。

持久和事务性消息的用法
消息流处理期间,持久消息会保存到磁盘。如果您能指定消息在输入和/或在输出上是非持久的,便可避免这种情况。如果您的消息流仅处理非持久消息,检查节点的配置和消息流自身;如果您的消息是非持久的,事务性支持可能是不必要的。有些节点的缺省配置强制事务性;如果您更新这些属性并重新部署消息流,可能会改善响应时间。
消息大小
较大的消息需要花较长的时间进行处理。如果您能将大消息分割成较小的信息块,则您能够改善消息流处理它们的速度。大型消息传递样本说明如何最小化消息流的虚拟内存需求以提高消息流处理潜在大型消息时的性能。
消息格式
尽管 WebSphere Message Broker 支持多种消息格式,且提供可用于将一种格式变换为另一种格式的工具,但这会导致增加开销。确保您没有执行任何不必要的转换或变换。

有关消息流性能的 developerWorks 文章中提供了更多有关提高消息流性能的信息。

相关概念
消息流概述
部署概述
开发消息流的系统注意事项
相关任务
配置代理域
优化消息流吞吐量
设计消息流
使用多个输入节点
创建消息流
定义消息流内容
编辑可配置的属性
相关参考
内置节点
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac00355_