BizTalk BlobStorageAdapter - 将 Blob 元数据提升为 BizTalk 属性

问题描述 投票:0回答:1

我在 BizTalk 2020 中使用 AzureBlobStorage 适配器并从 Azure Blob 存储接收 blob。这些 blob 具有我想在编排中使用的元数据。因此,我创建并部署了一个包含元数据键作为元素的架构。

在接收位置中,我使用架构的命名空间输入“blob 元数据的命名空间”,并选中“提升元数据属性”复选框

不幸的是,我收到以下错误:“按命名空间按列表加载属性信息失败或在列表中找不到属性。请验证架构是否已正确部署。”

架构:

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://POC.Test.AzBlobMetadata.AzLaParameters" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://POC.Test.AzBlobMetadata.AzLaParameters" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:annotation>
    <xs:appinfo>
      <b:schemaInfo schema_type="AzLaParameters" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" />
    </xs:appinfo>
  </xs:annotation>
  <xs:element name="MetaData">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="la_name" type="xs:string" />
        <xs:element name="la_runid" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

接收位置/适配器配置:

azure-blob-storage biztalk biztalk-2020
1个回答
0
投票

自提出问题以来,您希望在 2 1/4 年内解决该问题?对于 BizTalk 开发中处于令人遗憾的孤独状态的其他人来说,这里是:

首先,您创建了一个 Message 模式,这是行不通的。您需要创建一个“属性”架构,将每个元数据键分配给 Blob 对象一个字段。如果架构的目的是用于消息路由的可提升属性,则每个字段都应将“Property Schema Base”设置为类型“MessageContextPropertyBase”。为架构提供一个良好的目标命名空间和本地命名空间。现在将架构部署到公共资源应用程序。 一个例子:

property schema example with target and local namespace, and properties for metadata with lower case naming 在 AzureBlobStorage 接收位置上,输入目标命名空间作为 Blob 元数据的命名空间。订阅发送端口时,您将在过滤器的下拉列表中看到属性架构的本地命名空间。

但对我来说,真正的问题是属性架构字段必须与在 blob 元数据上写入的任何函数设置的属性完全匹配。因此,为了第一次就得到正确的结果,您应该检查代码的大小写和拼写是否准确,并确保添加 blob 可能具有的所有元数据键。如果您选择“升级属性”,则将尝试所有属性,但缺少一个属性 - 或大小写不匹配 - 将足以出现错误。这也意味着您需要确保 Azure 端的开发人员不会随意添加元数据。

如果仍然出现错误,您可以尝试删除“升级”选项(保留命名空间)并暂停接收的消息,因为所有元数据都将在 Context Props 中,只是不升级。但请注意,挂起消息下显示的上下文属性将不会准确显示大小写,所有元数据属性都将以大写首字母显示!这确实是一种误导。

© www.soinside.com 2019 - 2024. All rights reserved.