当第三方系统使用REST API时,BizTalk Server是否支持通过Azure文件共享交换大型文件?

当第三方系统使用REST API时,BizTalk Server是否支持通过Azure文件共享交换大型文件?,biztalk,azure-files,Biztalk,Azure Files,“从BizTalk Server 2016开始,您可以连接到Azure文件 使用文件适配器共享。Azure存储帐户必须为 已安装到BizTalk Server上。“ 资料来源: 所以乍一看,这似乎是一件值得支持的事情。直到最近,我们还在BizTalk Server上使用Azure文件共享,没有任何问题。但是,我们现在希望交换更大的文件(大约2MB)。BizTalk Server正在使用这些文件,但没有任何错误,但该文件仅包含NUL字节。(跟踪数据库中的消息大小正确,但已填充NUL字节) 写入文件

“从BizTalk Server 2016开始,您可以连接到Azure文件 使用文件适配器共享。Azure存储帐户必须为 已安装到BizTalk Server上。“

资料来源:

所以乍一看,这似乎是一件值得支持的事情。直到最近,我们还在BizTalk Server上使用Azure文件共享,没有任何问题。但是,我们现在希望交换更大的文件(大约2MB)。BizTalk Server正在使用这些文件,但没有任何错误,但该文件仅包含NUL字节。(跟踪数据库中的消息大小正确,但已填充NUL字节)

写入文件的系统(Azure逻辑应用程序、Azure存储资源管理器)出现以下错误:

{
  "status": 409,
  "message": "The specified resource may be in use by an SMB client.\r\nclientRequestId: 4e0085f6-4464-41b5-b529-6373fg9affb0",
}
如果我们尝试使用Windows资源管理器(因此使用SMB协议)将文件上载到装载的驱动器,BizTalk Server将毫无问题地拾取该文件

因此,我怀疑当系统写入或使用文件时使用REST API而不是SMB协议时,BizTalk Server文件适配器不受支持

所以我的问题是:

  • 这是对BizTalk Server支持Azure文件共享的警告吗
  • 我们能做些什么来让这一切顺利进行吗
  • 还是我们必须使用不同的方式交换文件
我们调查/尝试了以下内容,但未成功:

  • 我看不到Azure文件存储连接器中的任何设置(如所示) 由Logic应用程序使用),以确保文件被锁定,直到 写得很好
  • 尝试使用文件适配器高级适配器属性“读取时重命名文件”,但没有解决问题

以下是我们实施的解决方案,并证明了这一选择的合理性

选择的选项:我们坚持使用Azure文件共享并实现了信号文件模式

  • 集成系统的逻辑应用程序将信号文件写入创建消息文件的同一文件夹。信号文件具有相同的文件名,但扩展名为.done。e、 g.myfile.json.done
  • 在BizTalk解决方案中,已编写自定义管道组件以检索信号文件的相关消息文件
  • 注意:担心Azure文件连接器仍处于预览状态
折扣选项1:逻辑应用程序使用BizTalk Server连接器

  • 虽然这会起作用,但我渴望在系统和BizTalk之间保持一层隔离。这允许部署BizTalk应用程序,而不会使系统的端点停机
  • 限制BizTalk Server的负载均衡(限制)功能。注意:我们有一个限制文件拾取速率的方法
  • 此选项还需要设置“本地数据网关”
折扣选项2:使用文件系统连接器

  • Logic Apps以2MB的数据块写入文件,然后释放对文件的锁定。这使BizTalk能够立即提取文件。当连接器尝试写入下一个2MB块时,该文件不再可用,因此失败,出现400状态错误“请求的操作无法完成。请检查请求参数以确保文件系统上存在路径//test.json”
  • 文件大小限制为20MB
  • 需要设置内部数据网关。注意:我们还认为现在是引入使用集成服务环境(ISE)在vNET内托管逻辑应用程序的好时机。我们的想法是这样可以保持系统和BizTalk之间在网络内的文件交换。但是,目前还没有
折扣选项3:使用SFTP连接器

  • 我们的期望是,使用FTP的logic应用程序在编写文件时会遇到类似的分块问题
  • Azure SFTP连接器没有重命名操作
  • 我们极力避免使用这种老化方案
  • 我们极力避免支持SFTP所需的额外基础设施和软件
折扣选项4:逻辑应用程序在写入文件后重命名文件

  • 在或文件连接器中没有重命名操作。只有复制操作。我们关心的是,复制文件仍然需要时间才能写入,因此仍然存在相同的分块问题
折扣选项5:逻辑应用程序使用服务总线连接器

  • 这个
折扣选项6:使用Azure文件同步将文件镜像到其他位置。

  • 文件同步每24小时仅发生一次,因此不适合我们的集成需要。Microsoft将解决此问题
查看。它执行总文件大小为1 GB或更小的消息分块,并且:
提供重命名文件操作,重命名SFTP服务器上的文件。


使用ISE环境,您可以潜在地利用

您是否尝试使用与文件接收上的文件掩码不匹配的临时文件名写入文件?@charlie.mott:Azure文件存储连接器仍在预览中。但无论如何,您是否在连接器写入文件时仔细检查了文件是否具有不同的扩展名文件?可能您必须让biztalk仅拾取具有特定文件扩展名的文件。您的另一个选项可能是让某些连接器在写入后重命名文件,以便您仅拾取重命名为熟悉文件的文件。我知道我们可以在完成写入后要求第三方重命名该文件。但我会这样做宁愿更改协议,也不要要求第三方执行此操作。另外,Azure文件存储连接器没有重命名文件操作(由日志使用)