2

在 Azure 门户中,我创建了一个在创建 .zip 文件时触发的 Blob 存储事件。该事件的端点是一个服务总线主题。在本主题中,我有一个带有默认规则(过滤器 1=1)的订阅。

我想创建规则,它只会传递来自这个事件的消息。通常我会用 Label 属性做一个相关过滤器,但不幸的是,在来自 blob 存储的消息中,这个 Label 属性是空的。

我试过了:

钥匙 价值
事件类型 Microsoft.Storage.BlobCreated

但它没有用。

我得到的信息:

系统和自定义属性

消息文本:

{
  "topic": ***,
  "subject": "/blobServices/default/containers/my-test-subscription/blobs/test.zip",
  "eventType": "Microsoft.Storage.BlobCreated",
  "id": ***,
  "data": {
    "api": "PutBlob",
    "clientRequestId": ***,
    "requestId": ***,
    "eTag": "0x8D8EDDB53852C51",
    "contentType": "application/x-zip-compressed",
    "contentLength": 1118884,
    "blobType": "BlockBlob",
    "url": "***.blob.core.windows.net/my-test-subscription/test.zip",
    "sequencer": "000000000000000000000000000008CE0000000006ddc175",
    "storageDiagnostics": {
      "batchId": ***
    }
  },
  "dataVersion": "",
  "metadataVersion": "1",
  "eventTime": "2021-03-23T09:09:12.7782481Z"
}

难道我做错了什么?是否可以设置 blob 消息的 Label 属性?

4

1 回答 1

0

正如@GauravMantri 所说,我们无法根据 Azure 服务总线主题中的消息内容定义过滤规则。过滤规则只能基于用户定义的属性和系统属性。

在此处输入图像描述

所以如果你实现了这个功能,我们就可以在事件网格级别上做到这一点。我们可以创建一个包含事件类型和主题的过滤规则。

例如

"filter": {
            "subjectBeginsWith": "<>",
            "subjectEndsWith": ".zip",
            "includedEventTypes": [
                "Microsoft.Storage.BlobCreated"
            ],
            "advancedFilters": [],
            "enableAdvancedFilteringOnArrays": true
        },

更多详情,请参阅

https://docs.microsoft.com/en-us/azure/service-bus-messaging/topic-filters

https://docs.microsoft.com/en-us/azure/event-grid/event-filtering

https://docs.microsoft.com/en-us/azure/event-grid/handler-service-bus

于 2021-03-24T05:10:06.383 回答