导航

Send Port, Orchestration状态改变对订阅的影响

Posted on 2007-04-09 12:27  鸡尾虾的壳  阅读(215)  评论(0编辑  收藏  举报
     Send Port与Orchestration是两类典型的消息订阅者,也可以称为两类服务。系统对这两类对象提供了三种操作:Stop, Enlist, Unlist, Start. 每类操作的action其实就是对订阅状态的改变。

    当Enlist一个服务时,对应的订阅进入Stopped状态。所有符合订阅条件的消息将进入SuspendedQ。当服务被Start时,对应的订阅进入Active状态,这些消息将进入WorkQ。当unenlist时,服务与订阅以及相关消息的关联被取消。当Stop服务时,订阅也进入stopped状态,服务成为不可达的消息订阅者。

    对于实例订阅类型的Orchestration,实例订阅是在编排运行时被创建的,具体来说,是在关联集被初始化后的第一个持久点被保存的。

    当消息到达MessageBox时,bts_InsertProperty存储过程会被调用,把消息中的所有上下文属性插入MessageProps表中。然后bts_FindSubscriptions存储过程被调用,查找这些被插入的上下文属性对应的订阅。查找的依据是过滤器中的断言与属性值。