Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在BizTalk 2010中处理未订阅的消息_Biztalk_Biztalk 2010 - Fatal编程技术网

在BizTalk 2010中处理未订阅的消息

在BizTalk 2010中处理未订阅的消息,biztalk,biztalk-2010,Biztalk,Biztalk 2010,在BizTalk中,我正在接收一条已知类型的消息,该消息是我以前发送的消息的响应。当前业务流程通过关联集订阅响应。对于部署,我需要终止一些现有的业务流程,但将创建可以处理的新业务流程。通常这可以通过并行部署解决,但是第三方组件的更新需要我终止 是否有某种方法可以将终止后发生的路由失败路由到具有以下约束的不同业务流程\ 我需要原始消息类型来处理消息 我对管道中发生的错误不感兴趣(这也是自定义的)。这些应该像往常一样暂停 我尝试在接收形状上使用过滤器,但是它似乎无法识别消息,因为仍然存在路由故障

在BizTalk中,我正在接收一条已知类型的消息,该消息是我以前发送的消息的响应。当前业务流程通过关联集订阅响应。对于部署,我需要终止一些现有的业务流程,但将创建可以处理的新业务流程。通常这可以通过并行部署解决,但是第三方组件的更新需要我终止

是否有某种方法可以将终止后发生的路由失败路由到具有以下约束的不同业务流程\

  • 我需要原始消息类型来处理消息
  • 我对管道中发生的错误不感兴趣(这也是自定义的)。这些应该像往常一样暂停
我尝试在接收形状上使用过滤器,但是它似乎无法识别消息,因为仍然存在路由故障

我想到的另一种选择是不使用过滤器,但是如果两个业务流程处理同一条消息,我需要发送一些消息,这在这个解决方案中不应该发生


该解决方案只是临时的,一个月后所有旧的回复都将完成,并且可以删除该解决方案。因此,在不部署(或停机)的情况下删除它应该很容易。

在处理同步调用时,您通常会在一分钟左右得到响应。通常,设置维护窗口是更好的选择。几分钟内没有收到任何请求,这将允许您清理并更新资源/工件

如果这不是一个选项,通常并行部署是专门为此而设计的。但你在这方面也很有限


另一个选项是让他们手动挂起并处理它们,或者在挂起后保存挂起消息的正文并保存它们以供进一步处理(手动或您可以设置的特定流)。

我看到两个可能的选项,您必须先测试每个选项

  • 启用失败的消息路由,并将失败的响应订阅到发送端口
  • 只需让他们挂起并使用WMI脚本保存消息。如果这样做,还将获得包含其所有属性的上下文

  • 无论哪种方式,您都需要一个流程来重新提交它们。

    请稍候,第三方组件需要您重新部署的原因是什么?也许我们可以解决这个问题。@Johns-305第三方的dll加载到BizTalk中,并被我的解决方案的某些dll使用,这导致需要导入这些dll。如果BizTalk中存在任何实例,此导入将崩溃。3dr方目前不支持并行。他们不能提供其他版本吗?需要明确的是,它们是BizTalk程序集,而不是普通的.Net程序集。正确,它们不能提供其他版本。它们的包包含作为常规.NET程序集的两个BizTalk程序集。但最后一个可以通过在GAC中替换它们来更新。通常,BizTalk程序集也可以这样做,但在本例中,重新处理了我从代码中调用的业务流程。因此,最好在管理控制台中导入dll,然后在GAC中更新它们。在这种情况下,会发生更多的挂起,我不想将其放入操作人员的队列中。手动操作应该保持在最低限度。选项1还将处理管道中的错误,因此选项2(包括检查错误)似乎是一个要实现的选项。