0

我有以下设置:

  1. 活动中心
  2. 具有单个订阅的服务总线主题,该订阅接受来自该主题的所有消息(对于我的 POC)
  3. 以上服务总线订阅是在启用会话的情况下设置的
  4. 将事件从事件中心(输入)移动到服务总线主题(输出)的流分析 (SA) 作业。这是我的 SA 查询:
    SELECT *, LOWER(source) as Partner
    INTO [sb-output]
    FROM [test-input]
  1. 上述作业还设置了服务总线的分区键。根据https://docs.microsoft.com/en-us/azure/stream-analytics/service-bus-topics-output#custom-metadata-上的文档,在 [sb-output] 的系统属性中使用以下 json输出属性
    { "PartitionKey" : "Partner" }

我做了什么:

  1. 将事件发送到没有分区键的事件中心。这是成功的。
{
    "specversion": "1.0",
    "id": "c8c4faad-9f53-4e43-95ca-c318d673660a",
    "type": "CustomerChanged",
    "time": "2020-09-09T22:25:40.0148301Z",
    "source": "ABCD",
    "subject": "system-1",
    "datacontenttype": "application/json",
    "dataschema": "1.0",
    "data": {
        "customerNumber": "7879875212123",
        "firstName": "John",
        "lastName" : "Kennedy"
    }
}
  1. SA 成功地将事件从事件中心移动到服务总线。
  2. 服务总线订阅成功收到如下消息:
    {
        "specversion": "1.0",
        "id": "c8c4faad-9f53-4e43-95ca-c318d673660a",
        "type": "CustomerChanged",
        "time": "2020-09-09T23:22:13.3647825Z",
        "source": "ABCD",
        "subject": "system-1",
        "datacontenttype": "application/json",
        "dataschema": "1.0",
        "data": {
            "customerNumber": "7879875212123",
            "firstName": "John",
            "lastName": "Kennedy"
        },
        "EventProcessedUtcTime": "2020-09-09T23:22:14.3776603Z",
        "PartitionId": 0,
        "EventEnqueuedUtcTime": "2020-09-09T23:22:14.3080000Z",
        "Partner": "abcd"
    }
  1. 可以看出,属性 Partner 位于消息的末尾。
  2. 但是,Service Bus Explorer 工具显示 PartitionKey 属性尚未设置为“abcd”,而是设置为其他一些随机字符串。

故障排除:

  1. 为了确保我可以使用特定的 PartitionKey 键向服务总线主题发送消息,我编写了一个示例代码,通过显式设置消息的会话 id 属性将消息提交给服务总线主题。服务总线资源管理器向我展示了 SessionId 和 PartitionKey 属性都设置为正确的值。

  2. 在 ASA 输出配置中,尝试设置以下系统属性 json。都没有奏效。

{ "SessionId" : "Partner" }

{ "PartitionKey" : "Partner", "SessionId" : "Partner" }

  1. 在 ASA 输出配置中,尝试设置属性列 (to Partner) 以及系统属性列 (to { "PartitionKey" : "Partner" })。那没有用。

问题:

  1. 我在绕过 PartitionKey 值从我的自定义字段传播到服务总线消息的 ASA 输出配置中做错了什么?
  2. 还有一个原因是系统属性列不显示我保存后输入的 json 文本吗?
4

1 回答 1

0

根据原始发布者的评论分享答案:

目前,微软正在努力修复。

在此之前,您可以使用建议的解决方法:{ "PartitionKey" : "Partner", "SessionId" : "Partner", "Label": "Partner" }系统属性中。

于 2020-10-08T07:22:45.343 回答