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

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

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

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

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

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

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

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

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

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

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

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

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

BizTalk开发系列(三十六) Orchestration单实例执行的更多相关文章

  1. BizTalk开发系列(三十五) TCP/IP 适配器

    BizTalk 的TCP/IP适配器最初是为英国的保健行业开发.该适配器属于BizTalk进程内适配器,将消息通过TCP/IP 套接字符串在BizTalk服务器与远程客户端间进行通讯. TCP/IP适 ...

  2. BizTalk 开发系列(三十九) BizTalk Server 2009技术概览

    BizTalk Server 2009已经发布一段时间了,之前Beta版发布的时候也写过一篇文章<BizTalk Server 2009 Beta初体验>, 当时比较了2006 R2与20 ...

  3. BizTalk开发系列(三十八)微软BizTalk Server定价和许可[解读]

    做BizTalk的项目一段时间了,但是对BizTalk的价格和许可还不是很了解.给客户设计解决方案时大部分产品都是直接按照企业版的功能来设计,很 少考虑到价格和许可方面的因素,以为这个不是我们的事情或 ...

  4. BizTalk开发系列(三十二)浅谈BizTalk主机性能优化

    很多BizTalk的项目都要考虑到性能优化的问题,虽然BizTalk采用多线程处理消息的,大大提高了程序效率.但默认情况下 BizTalk的主机有很多阻止参数会控制BizTalk对服务器的资源使用率, ...

  5. BizTalk开发系列(二十六) 使用Web Service

    Web Service是在构建SOA平台中广泛使用的技术.在BizTalk开发过程中使用SOAP适配器接收和发送 Web Services 请求.业务流程可以发布为 Web Services 并使用外 ...

  6. BizTalk开发系列(三十四) Xpath

    XPath 是在 XML 文档中查找信息的语言,在BizTalk的开发中应用非常广泛,当然你可以不必先学Xpath再去学BizTalk.但是如果对Xpath有一定了解的 话,在很多应用下会使你的开发更 ...

  7. BizTalk开发系列(三十)单向端口实现请求-响应

    BizTalk本质上是异步的消息处理引擎.BizTalk的请求与响应模式是基于异步之上的同步消息交换.消息引擎通过消息的扩展架构链接许 多异步消息,消息的相关集关联请求与响应消息.例如,客户端发送一个 ...

  8. BizTalk开发系列(二十八) MSMQ 适配器

    MSMQ(MicroSoft Message Queue,微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间 中的任一 ...

  9. BizTalk开发系列(三十三)BizTalk之Excel终极解决方案

    Excel作为优秀的客户端数据处理程序得到了广泛的应用. 由于其简单又强大的功能在很多公司或个人的数据处理中占用非常重要的位置. 而BizTalk作为微软的SOA主打产品虽然免费提供了很多Adapte ...

随机推荐

  1. windows下自动关机

    定时:at 00:00 shutdown -s     //在00:00时关机 倒计时:shutdown -s -t 3600   //3600s后关机 取消:shutdown -a

  2. caffe中添加local层

    下载caffe-local,解压缩; 修改makefile.config:我是将cuudn注释掉,去掉cpu_only的注释; make all make test(其中local_test出错,将文 ...

  3. hdu 并查集分类(待续)

    hdu 1829 A Bug's Life 题目大意: 给你n个动物,输入m行a,b,表示a和b应该是异性的,要你判断是否有同性恋. 并查集中,1到n代表应性别,n+1到2n代表一个性别,合并一下,判 ...

  4. 分享Kali Linux 2016.2第47周镜像

    分享Kali Linux 2016.2第47周镜像Kali Linux官方于11月20日发布Kali Linux 2016.2的第47周镜像.这次发布仍然包含11个镜像文件.其中,不仅包含Gnome桌 ...

  5. html标题上加上小图标

    一般网站标题上都会有小图标,后面跟上文字,实现代码如下: <link rel = "Shortcut Icon" href="images/nav_logo.ico ...

  6. 【面经】【转】C程序的内存布局

    一个C语言程序一直以来都是由以下5个段组成: 1.代码段(text segmrnt):存放CPU执行的机器指令,通常情况下,代码段是可共享的,使其可共享的目的是对于频繁被执行的程序,只需要在没存中有有 ...

  7. POJ2976 Dropping tests(01分数规划)

    题目大概说给n个二元组Ai和Bi,要去掉k个,求余下的100*∑Ai/∑Bi的最大值. 假设要的最大的值是ans,令Di=Ai-ans*∑Bi,对Di排序取最大的n-k个,如果∑Ai-ans*∑Bi& ...

  8. The Parallel Challenge Ballgame[HDU1101]

    The Parallel Challenge Ballgame Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ( ...

  9. HDU5709 : Claris Loves Painting

    对于每个点维护两棵线段树$T1[x],T2[x]$: $T1[x]$维护$x$子树内,深度在$[l,r]$内的点数,同种颜色有多个的话,保留深度最小的那个. $T2[x]$维护$x$子树内每种颜色的最 ...

  10. BZOJ2164 : 采矿

    树链剖分+线段树,每个节点维护以下信息: (1)单独在某个点分配$i$个人的最大收益.可以$O(m)$合并. (2)分配$i$个人的最大收益.可以用$O(m^2)$合并. 时间复杂度$O(c(m^2\ ...