WebSphere Message Broker 执行模型是用来通过一系列节点执行消息流的系统。
当初始化执行组时,使相应的 LIL 可以用于运行时。执行组运行时进程启动,并衍生专用的配置线程。在消息流执行环境中,消息流是线程安全的。您可以在许多线程上并发地运行消息流,而不必考虑序列化问题。您实现的任何用户定义的节点都不应该损害此线程技术模型。注意以下要点:
- 发送到消息流的输入消息仅通过接收它的线程处理。在消息处理期间不发生线程或上下文切换
- 由消息流访问的数据结构仅对单个线程可视,并且这些数据结构仅对正在处理的消息生命期存在。
- 消息流的单个实例在所有消息流线程池中的线程之间共享。这与消息流节点的行为相关,在节点中它没有状态。
- 执行组的内存需求不会受在多个 OS 线程上运行消息流的过度影响。
- 消息流执行环境与过程化编程在概念上有些相似。您插入到消息流的节点与使用函数调用接口调用的子例程相似。然而,不同于“调用 - 返回”接口,在其中参数以输入消息数据的形式传递,在 WebSphere Message Broker 中,执行模型被引用为“传播和返回”模型。
- WebSphere Message Broker 消息流本来就是线程安全的(thread-safe),且消息流可以在多个线程上并发地运行
例如,如果您正在使用用户定义节点处理消息,且您也正在使用用户定义解析器解析进入消息,则节点和解析器都将包含实施函数。当发生某些事件时,代理调用这些实施函数、回收。
当接收输入消息到该输入节点的代理时,它被发送到用户定义的节点。
- 对于 C 节点,代理为用户定义的节点调用 cniEvaluate 函数。
请参阅cniCreateNodeContext,获取关于 cniEvaluate 函数的信息。
- 对于 Java 节点,代理调用由用户定义的节点实施的 evaluate 方法。
如果节点要查询消息来确定对其进行什么操作,则对于您节点所使用的语言它适当调用
一些 C 实用程序函数或 Java 方法。代理在其实施函数之一上调用用户定义的解析器。这将指示解析器开始构建 WebSphere Message Broker 解析树。解析器将通过调用在解析树中创建元素的实用程序函数开始构建树。代理可以多次调用解析器,而不是只调用一次。