本主题中的信息适用于输出节点和消息处理节点。这两种节点类型可以视为一体,这是因为尽管消息处理节点通常用于处理消息,而输出节点用于从消息提供位流格式的输出,但是您可以使用这两个节点类型中的任何一个来执行这两种功能中的任何一种。
当用 Java 编写的用户定义的消息处理节点为代理所知或向代理进行注册时,发生注册阶段。
无论何时启动代理,都会装入所有相关的 lil 和 Java 类。要确保向代理注册了消息处理节点,您必须将实现 MbNodeInterface 接口的类与代理一起提供,并且包含在代理的类路径中。
当代理部署包含用户定义的消息处理节点的消息流时,实例化 Java 用户定义的消息处理节点。当例示节点时,调用消息处理节点的类的构造函数。
实例化节点时,会创建任何已指定的终端。消息处理节点可以具有与其相关的任何个数的输入和输出终端。为了声明这些终端,您必须在您的节点构造函数中包含 createInputTerminal 和 createOutputTerminal 方法。
输出终端包括 out、failure 和 catch 终端。为了按您需要创建许多输出终端,使用节点类构造函数内的 createOutputTerminal 类。
作为最小值,您仅需要使用您的构造函数类创建这些输出终端。然而,如果您需要初始化属性值则您还应该在消息处理节点的这一点包括该代码。
如果您要处理传回消息处理节点的异常,一个好的方法是使用 createOutputTerminal 方法,为您的用户定义的消息处理节点创建一个故障终端。 为此处理使用故障终端是明智的,因为这是 WebSphere Message Broker 错误要传播至的地方。
确保正确处理了由消息处理节点捕获的任何异常。如果您不包括故障终端,则消息处理节点将不会尝试处理异常。如果消息流不包含任何的异常处理方法,则所抛出的任何异常都传回到将处理它们的输入节点。
如果您捕获了异常,则确保您重新抛出任何消息处理节点无法处理的异常。 这会使异常传回到进行处理的输入节点,例如,当您要回滚一个事务时。