本主题向您介绍开发用户定义的解析器之前应该考虑的概念。当您就绪时,使用使用 C 创建解析器中的指示信息构造您的解析器。
在您开始创建您自己的解析器前,要清楚您这样做的目的。大多数任务可以使用已经与 WebSphere Message Broker 一起提供的函数执行,因此可能没有必要为特殊的任务创建用户定义的解析器。
大多数您需要执行的任务可以使用与 WebSphere Message Broker 一起提供的函数执行。您应该确保在创建您自己的解析器前,要执行的任务使用内置 WebSphere Message Broker 函数无法完成。如果 WebSphere Message Broker 中可用的解析器能满足您的需要,则您可以定义自己的解析器来解析内部的、客户特定的或常规的商业消息格式。
有关提供的 WebSphere Message Broker 解析器可以在其中接受输入消息的消息域和提供的解析器可以使用的消息头的详细信息,请参阅解析器。
WebSphere Message Broker 不支持多段式多格式消息。多段式 MRM 消息必须由都以同样格式组织的消息组成。
WebSphere Message Broker 支持部分解析器,这允许您的解析器仅解析消息中相关的字段。使用部分解析可以节省系统资源。
WebSphere Message Broker 支持称所谓的部分解析。如果个别消息包含成百甚至上千个单独字段,则解析操作需要相当大的内存和处理器资源才能完成。因为个别消息流可能引用仅仅一些字段,或全部不用,完全解析每个输入消息是无效的。因此,WebSphere Message Broker 允许解析需要时的基础上的消息。(这不阻止解析器立刻处理整个消息,且写了一些解析器以便精确地执行。)
逻辑消息中的每个语法元素有两个位表示是不是所有元素的所有边的元素是完整的,及它子代是否完成。通常解析以自底向上、从左到右的方式进行。当解析器完成给定元素和第一个子代前的特定元素的兄弟时,它设置第一个完成位为 1。类似地,当元素的下一个兄弟的指针及最后的子指针完成时,其他完成位设置为 1。
在部分解析中,代理一直等待直到引用了部分消息,并调用解析器解析消息的该部分。WebSphere Message Broker 消息处理节点使用分层的名称引用消息中的字段。名称在消息根开始并继续沿着消息树执行直到找到特定元素。如果遇到没有设置完成位的元素,需要此元素的进一步导航,则调用适当的解析器入口点来解析必要的消息部分。分析了消息的相关部分,则添加合适的元素被添加到逻辑消息树,且问题中的元素标记为完成。
如果您不需要解析全部位流,则您可以使用部分解析,例如缓慢解析(lazy parsing)。在部分解析期间,递归地调用解析器直到消息树被标记为完成且已知请求的元素不存在。
您是否选择执行全部或部分解析,这取决于您如何在 WebSphere Message Broker 中处理消息。如果消息中的大多数字段元素可以在在 WebSphere Message Broker 中处理期间被访问,则执行消息的全部解析当试图访问时它可能更有效。这对于更小的消息可能更有效。
然而,如果消息中的大多数字段元素不可以在在 WebSphere Message Broker 中处理期间被访问,则执行消息的懒散解析当试图访问特定字段时它可能更有效。这当消息大小增加时特别真实。