Tag: biztalk

BizUnit – 缺少管道测试步骤

我已经使用nuGet Package Console下载了BizUnit包。 我想测试我的自定义管道组件。 根据源存储库( 单击 ),有一个BizUnit.TestSteps.BizTalk.Pipeline命名空间包含,即我想要使用的ExecuteSendPipelineStep类。 但我在我的机器上找不到它。 我使用VS 2013 Professional和BizTalk 2013.我做错了什么?

BizTalk服务器问题

我们公司有一个biztalk服务器(一个虚拟的(1!)…)和一个保存数据的sql server。 现在我们有很多数据流量。 我说的是成千上万。 所以我实际上不确定一台服务器是否相当安全,但我们的公司并不那么容易说服。 最近我们遇到了很多问题。 请允许我详细说明,所以我没有遗漏任何东西: 我们的服务器有5个应用: 一个有3个编排,12个发送端口,16个接收位置。 一个有4个编排,32个发送端口,20个接收位置。 一个有4个编排,24个发送端口,20个接收位置。 一个有47个(是47个)编排,37个发送端口,6个接收位置。 一个具有几个资源的常见应用程序。 自从我们使用47个业务流程部署应用程序以来,我们遇到了问题。 很多这些编排使用赋值形状,使用c#代码进行映射。 这是因为我们使用HL7扩展,这有点特殊,所以通过使用c#code和xpath,映射更容易,因为很多这些模式看起来很相似。 c#读入通过xpath接收的XmlNodes,并返回XmlNode,然后再将其分配给biztalk消息。 我不确定这可能是原因,但我想我会提到它。 发送和接收端口有许多不同的类型:文件,MQSeries,SQL,MLLP,FTP。 每种类型都有不同的主机实例,以平衡负载。 我们的业务流程使用BiztalkApplication主机。 在这个服务器上还运行了几个脚本,主要是ftp上传脚本和拉链脚本,每天拉链文件每半小时压缩一次,并在一个月后删除zip文件。 我们在备份文件上使用这个zipscript(我们备份很多,备份也在我们的服务器上),我们这样做是因为服务器在将文件发送到有很多(很多)文件的位置时出现问题,所以之后文件减少到拉链它变得更好。 现在我们最近遇到的问题主要是两个主要问题: 我们最重要的问题如下。 我们在队列中保留了一个包含大量消息的接收位置以进行测试。 在我们启动这个使用47个业务流程的接收位置之后,正在运行的服务实例开始向天空摇滚。 好的,这很正常。 假设大约10000,然后我们停止接收位置以查看biztalk如何处理这10000个实例。 通常情况下,它们会很快下降,有时会发生故障,但过了一段时间它会开始“节流”,这意味着它们只是停止处理并且服务实例保持相同的数字,例如在30秒内它从10000下降到4000,然后它保持在4000并且它非常非常缓慢地降低,例如在5分钟或者30分钟内降低。 所以这意味着,其他应用程序的所有其他服务实例也都停留在这里,并且它们也没有被处理。 我们注意到在重新启动主机实例后,实例编号再次快速下降。 因此,我们尝试有选择地重新启动不同的主机实例以找到问题。 我们注意到最终重新启动文件发送/接收主机实例就可以了。 所以我们认为文件发送会成为问题。 结合我们做了很多备份。 所以我们用mqseries备份替换了文件类型备份。 发生同样的问题,有趣的是,重新启动文件发送/接收主机仍然可以解决问题。 在事件查看器中也找不到任何错误。 我们遇到的第二个问题是。 有时在早上6点左右,全部或部分主机实例正在停止。 在事件查看器中,我们注意到以下错误(这些错误不止一个): 具有URL“SQL:// ZNACDBPEG / mdnd0001 /”的接收位置“MdnBericht SQL”正在关闭。 详细信息:“已超出错误阈值。接收位置正在关闭。”。 消息传递引擎无法将具有URL“\ m2mservices \ Othello_import $ \ […]

如何设置附件名称以在Outlook中正确显示

我正在使用BizTalk 2016 SMTP发送端口创建一个带有MIME附件的电子邮件。 但是,我认为任何人都可以从任何其他语言中分享有关Outlook和MIME的奇怪之处的任何知识可能会帮助我解决下面的问题。 在Outlook中,附件显示为body.txt,但是当我单击“文件保存”时,它会显示我在创建它时使用的名称(这是用户想要查看的名称)。 我所指的是左侧,它在5k上方显示“body.txt”,在屏幕截图中的附件图标右侧显示: 在BizTalk C#Pipeline组件中,使用以下代码设置该附件,我们在BizTalk消息上设置上下文属性。 我也尝试过设置ContentHeader和ContentID。 strFilename = “MyFileName_693.txt”; // Just for example. pInMsg.BodyPart.PartProperties.Write( “FileName”, “http://schemas.microsoft.com/BizTalk/2003/mime-properties”, strFilename); 当我将电子邮件转发到我的Gmail时,附件显示了正确的名称。 所以我的问题特别是让它在Outlook(2016)中显示所需的名称。

如何使用AppDomain限制静态类的范围以便线程安全使用?

我被一个架构不佳的解决方案所困扰。 它不是线程安全的! 我在解决方案中有几个共享类和成员,在开发过程中一切都很酷…… BizTalk已经沉没了我的战舰。 我们使用自定义BizTalk适配器来调用我的程序集。 适配器正在调用我的代码并并行运行,所以我假设它在同一个AppDomain下使用多个线程。 我想做的是让我的代码在自己的AppDomain下运行,这样我所遇到的共同问题就不会相互混淆。 我有一个非常简单的类,BizTalk适配器实例化然后运行Process()方法。 我想在我的Process()方法中创建一个新的AppDomain,所以每次BizTalk都旋转另一个线程时,它将拥有自己的静态类和方法版本。 BizTalkAdapter代码: // this is inside the BizTalkAdapter and it is calling the Loader class // private void SendMessage(IBaseMessage message, TransactionalTransmitProperties properties) { Stream strm = message.BodyPart.GetOriginalDataStream(); string connectionString = properties.ConnectionString; string msgFileName = message.Context.Read(“ReceivedFileName”, “http://schemas.microsoft.com/BizTalk/2003/file-properties”) as string; Loader loader = new Loader(strm, msgFileName, connectionString); loader.Process(); EventLog.WriteEntry(“Loader”, […]

在Biztalk Orchestration中创建新消息的最佳方法是什么?

我正在寻找最佳的解决方案,用于基于在Biztalk业务流程中使用的预定义XSD架构创建新的消息实例。 额外的投票通过质量参考链接获得明确有效的示例或答案的答案。

有没有办法通过代码自动打开或关闭BizTalk接收位置?

有没有办法自动打开或关闭BizTalk中的接收位置? 似乎应该有某种API或某些类似的东西。 我更喜欢在C#中工作,但WMI或某种脚本也可以工作。

静态类的范围是什么?

我有一个可以一次由多个进程使用的程序集。 如果我使用静态类,那么多个进程是否都使用该类的相同“实例”? 由于这些进程是分开的,它们是否会在不同的应用程序域下运行,因此静态“实例”是否分开? 这里的细节中的布丁是一个自定义BizTalk适配器正在使用该程序集,我将其设置为以并行批处理方式处理消息。 这就是我所说的“多个过程”。