在biztalk pub/sub模型中,主要有两个核心组件:数据库部分的MessageBox、负责引擎与MessageBox内部交互的MessageAgent。在系统中,发布者、订阅者、事件(消息)在整个系统中的关系是整个模型的关键。
发布者:在Biztalk系统中,存在3类消息发布者。Receive Port是第一种消息发布者。它从Adapter与URI处得到消息,经过Pipeline、Map处理后,委托给MessageAgent发布到MessageBox上,并且持久化存储。
Orchestration中的Send Shape是第二类消息发布者。Solicit-response sendport这样的随机点也属于消息发布者。
Orchestration中的orchestration execs是第三类消息发布者。注意Call Orchestration不是消息发布者,它的特点是inline syschronous。
发布者:在Biztalk系统中,存在3类消息发布者。Receive Port是第一种消息发布者。它从Adapter与URI处得到消息,经过Pipeline、Map处理后,委托给MessageAgent发布到MessageBox上,并且持久化存储。
Orchestration中的Send Shape是第二类消息发布者。Solicit-response sendport这样的随机点也属于消息发布者。
Orchestration中的orchestration execs是第三类消息发布者。注意Call Orchestration不是消息发布者,它的特点是inline syschronous。
订阅者:Orchestration是一类消息订阅者。编排订阅分为两种类型:激活订阅与关联集订阅。激活订阅会生成一个新的编排示例。
Send Port是第二类消息订阅者,属于激活订阅。
请求/相应类型的Receive Port是第三类订阅着,借助内部关联集实现。
事件/消息:MessageBox 与MessageAgent不关注消息的内容。它们的关注点在于消息的结构,Part的个数,名称,以及消息的Context. 消息的Context分为两类:写属性与提升属性。两者的区别在于后者用于消息路由。消息路由层支持多值属性,虽然内建Adapter不会生成多值属性。但是开发者可以在Pipeline中实现多值属性。注意一点,不能在Orchestration中访问多值属性。