• BizTalk开发系列(三十六) Orchestration单实例执行


    更多内容请查看:BizTalk动手实验系列目录

                          BizTalk 开发系列

    BizTalk 是高效的消息处理引擎,采用多线程并发的方式来处理消息。也就是说当有消息被接收的时候就会产生一个新的消息处理实例。但有时目标系统可能并没有并发处理的能力, 这时就需要在BizTalk中采用单实例的方式来处理消息。在BizTalk的管道中直接可以启用按序送达的方式来实现, 但是在Orchestration中并没有提供类似的选项.该如何做到呢?

    其实在BizTalk中可以根据设置消息的Correlation Set也就是相关属性来实现这样的效果。也就是第一条消息进来之后创建一个Orchestration实例,并且初始化相关集,接下来接收到的消息,如果有相同的相关集的话都会由相同的Orchestration实例来处理而不会创建新的Orchestration实例。

    接下来就来实现这样的一个Demo

    首先创建Schema,创建完之后新建Orchestration并创建相应的消息。接下来参照下图在Orchestration中画出相应的图形:

    clip_image002

    绑定相应的消息到Receive, Send形状中,并连接接收与发送形状及端口。本Demo中没有对消息进行转换。只是实现端到端的消息传递而已。

    到目前为止整个流程已经基本建完了。不过现在还不能实现之前预想的功能。还需要做下面关键的一步: 创建和设置Correlation

    1. 在 Orchestration View的Type类型的Correlation Types里创建Correlation Type.本Demo实现的是以某个Receive Port接收到的消息作标识.此选择Correlation Properlity属性要选择BTS.ReceivePortName

    clip_image004

    2. 接着创建Correlation Set. 在Orchestration View的TransferOrch中创建.

    clip_image006

    3. Correlation Set创建好之后需要做两部分操作一个是初始化.注意在一个Orchestration里面Correlation Set只能被初始化一次。因此。在本流程中。将Receive_1的Initializing Correlation Sets设置为刚才设置的Correlation Set。

    clip_image008

    4. 在Receive_2的Following Correlation Sets设置为刚才设置的Correlation Set

    至此Singleton Orchestration已经设计好了。给程序集完成程序签名、部署和设置之后来看看实际运行的效果。

    接收端口会批量接收消息(当然这里你可以选择按序接收)。第一个消息进行Orchestration之后会先创建Orchestration实例。接下来的消息会使用原有的Orchestration 实例进行处理。当然消息必须是来自于同一个接收端口。这也是之前我们设定的Correlation。

    clip_image010

    上图为BizTalk运行时的日志信息,从日志中我们可以更清楚的看到BizTalk的处理过程, 若要重新让Orchestration初始化实例,则需要重新启动BizTalk 项目。

  • 相关阅读:
    两种类型插件系统
    ArcEngine序列化IFeatureRenderer对象
    [WorldWind学习]14.ConfigurationLoader类
    [WorldWind学习]15.模型加载
    AE应用程序开发的思考
    [C++摘抄]void*
    XML文件读写学习
    EA正向工程
    Word2010利用公式编辑器实现公式“显示”“居中”公式编号右对齐
    [Qt]Hello Qt !
  • 原文地址:https://www.cnblogs.com/cbcye/p/1455299.html
Copyright © 2020-2023  润新知