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单实例执行的更多相关文章
-
BizTalk开发系列(三十五) TCP/IP 适配器
BizTalk 的TCP/IP适配器最初是为英国的保健行业开发.该适配器属于BizTalk进程内适配器,将消息通过TCP/IP 套接字符串在BizTalk服务器与远程客户端间进行通讯. TCP/IP适 ...
-
BizTalk 开发系列(三十九) BizTalk Server 2009技术概览
BizTalk Server 2009已经发布一段时间了,之前Beta版发布的时候也写过一篇文章<BizTalk Server 2009 Beta初体验>, 当时比较了2006 R2与20 ...
-
BizTalk开发系列(三十八)微软BizTalk Server定价和许可[解读]
做BizTalk的项目一段时间了,但是对BizTalk的价格和许可还不是很了解.给客户设计解决方案时大部分产品都是直接按照企业版的功能来设计,很 少考虑到价格和许可方面的因素,以为这个不是我们的事情或 ...
-
BizTalk开发系列(三十二)浅谈BizTalk主机性能优化
很多BizTalk的项目都要考虑到性能优化的问题,虽然BizTalk采用多线程处理消息的,大大提高了程序效率.但默认情况下 BizTalk的主机有很多阻止参数会控制BizTalk对服务器的资源使用率, ...
-
BizTalk开发系列(二十六) 使用Web Service
Web Service是在构建SOA平台中广泛使用的技术.在BizTalk开发过程中使用SOAP适配器接收和发送 Web Services 请求.业务流程可以发布为 Web Services 并使用外 ...
-
BizTalk开发系列(三十四) Xpath
XPath 是在 XML 文档中查找信息的语言,在BizTalk的开发中应用非常广泛,当然你可以不必先学Xpath再去学BizTalk.但是如果对Xpath有一定了解的 话,在很多应用下会使你的开发更 ...
-
BizTalk开发系列(三十)单向端口实现请求-响应
BizTalk本质上是异步的消息处理引擎.BizTalk的请求与响应模式是基于异步之上的同步消息交换.消息引擎通过消息的扩展架构链接许 多异步消息,消息的相关集关联请求与响应消息.例如,客户端发送一个 ...
-
BizTalk开发系列(二十八) MSMQ 适配器
MSMQ(MicroSoft Message Queue,微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间 中的任一 ...
-
BizTalk开发系列(三十三)BizTalk之Excel终极解决方案
Excel作为优秀的客户端数据处理程序得到了广泛的应用. 由于其简单又强大的功能在很多公司或个人的数据处理中占用非常重要的位置. 而BizTalk作为微软的SOA主打产品虽然免费提供了很多Adapte ...
随机推荐
-
Wpf之Xaml属性值和特性值(一)
其实我一直很好奇在xaml中,通过Attribute=Value这种方式可以进行对元素的描述, 例如: <Rectangle Name=” rectangle” Fill=”Blue”/> ...
-
11 Clever Methods of Overfitting and how to avoid them
11 Clever Methods of Overfitting and how to avoid them Overfitting is the bane of Data Science in th ...
-
oracle中如何创建dblink
当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据.下面讲介绍如何在本地数 ...
-
两年内从零到每月十亿 PV 的发展来谈 Pinterest 的架构设计(转)
原文:Scaling Pinterest - From 0 To 10s Of Billions Of Page Views A Month In Two Years 译文:两年内从零到每月十亿 PV ...
-
redhat 7.2 配置yum源
http://blog.csdn.net/wylfengyujiancheng/article/details/50418930
-
【JSP&;Servlet学习笔记】5.Servlet进阶AIP、过滤器与监听器
Servlet接口上,与生命周期及请求服务相关的三个方法是init().service()与destory()方法.当Web容器加载Servlet类并实例化之后,会生成ServletConfig对象并 ...
-
JQUERY、AJAX双击DIV,直接修改DIV内的内容
最近在做后台功能开发的时候,用到对排序字段的修改,感觉只为了修改一个排序值,而要重新进入编辑页比较麻烦,于是自己动手写…… 最近在做后台功能开发的时候,用到对排序字段的修改,感觉只为了修改一个排序值, ...
-
jdk生成https证书
最近由于客户现场做“等保”,其中有一条要求我们必须使用https进行web端的请求,之前我们一直沿用的是默认的http请求,用户说不安全,唉~~局域网,一直强调安全,安全,话不多说了 我采用的使用JA ...
-
php与html代码的若干转换
以前懵懵懂懂的看过,没怎么在意,现在总结一下 一般来说,像留言板之类的content,用这样的就够了: $content=addslashes(htmlspecialchars($_POST['con ...
-
相对和绝对路径/cd命令/创建和删除目录mkdir/rmdir/rm命令
2.6 相对和绝对路径 2.7 cd命令 2.8 创建和删除目录mkdir/rmdir 2.9 rm命令 绝对路径:从根开始的路径:文件所在的路径: 相对路径:相对于当前目录而言的路径:上一级或者下一 ...