标签: azure-eventgrid

消息总线 vs. 服务总线 vs. 事件中心 vs. 事件网格

我正在学习消息传递系统,但对这些术语感到困惑。

下面的所有消息传递系统都提供了具有不同功能集的服务之间的松散耦合。

queue - FIFO,拉动机制,每个队列有 1 个消费者,但有任意数量的生产者?

message bus- 发布/订阅模型,任意数量的消费者和任意数量的生产者处理消息?是Azure Service Bus的实现message bus

event bus - 发布/订阅模型,任意数量的消费者和任意数量的生产者处理事件?

就术语而言,人们是否可以互换使用message busevent bus

事件和消息有什么区别?在这种情况下,这些只是同义词吗?

event hub- 发布/订阅模型,分区,重放,消费者可以将事件存储在外部存储中或接近实时数据分析。究竟什么是事件中心?

event grid- 它可以用作事件中心的下游服务。它究竟做了哪些event hub没有做的事情?

有人可以提供一些历史背景,说明每种技术如何演变为另一种技术,每种技术都与一些实际用例相关联吗?

我发现消息总线与消息队列有帮助

message-queue servicebus azureservicebus azure-eventhub azure-eventgrid

28
推荐指数
3
解决办法
1万
查看次数

在Azure上实现域事件(DDD-CQRS)

Microsoft docs 为DDD和CSRS 提供了一篇关于"域事件:设计和实现" 的文章.

如何在Azure上实现域事件.特别是哪些Azure服务适合,以及如何组合它们.

到目前为止,关于这个主题的文章相对较少.这个介绍似乎很好.在某种程度上,它谈到可能的实施; 例如Azure Functions与Azure Logic Apps; 和Azure Service Bus与Azure事件网格.

azureservicebus azure-eventgrid

13
推荐指数
2
解决办法
1063
查看次数

获取ARM中的功能应用程序的Webhook URL以用于事件网格订阅

我正在尝试自动部署我们的环境vir ARM模板.我可以部署事件网格和功能应用程序,但现在我需要在部署功能应用程序后将功能应用程序订阅到事件网格.有没有办法获得功能应用程序的webhook网址

  1. 通过ARM
  2. Release管道中的其他一些组件(Powershell)

一旦我们有了webhook网址,我们就可以通过ARM创建订阅 - 但是要找到正确的网址似乎是我们堕落的地方.

请帮忙

azure azure-functions azure-eventgrid

7
推荐指数
1
解决办法
1074
查看次数

是否可以在上传 Azure CloudBlockBlob 的同时在其上设置元数据?

我目前使用以下方法上传 CloudBlockBlob:

CloudBlockBlob.UploadFromStreamAsync

然后我马上在上面设置了一堆用户元数据。

问题是:我有一个事件网格事件,在上传 blob 时会触发该事件,但事件处理程序需要元数据。长话短说,这是一个竞争条件,我必须“希望”在我的事件处理程序响应块 blob 上传之前已经设置了元数据。

是否有某种方法可以在单个操作中上传块 blob(文件)并设置其元数据?

.net c# azure azure-storage-blobs azure-eventgrid

7
推荐指数
1
解决办法
2939
查看次数

Azure 门户不允许我创建 Azure 事件网格主题的订阅。创建按钮变灰

好的,非常基本 - 我似乎无法在 Azure 门户中创建对 Azure 事件网格主题的订阅。按照指南进行操作,表格中没有红色墨水(表示任何错误或我错过的任何内容),但“创建”按钮仍然保持灰色,对我越来越绝望的按下没有反应!

因此,在 Azure 门户上使用“创建事件订阅”表单...

  1. 订阅名称格式正确。
  2. 当我从事件主题中选择创建选项时,主题已正确生成(实际上已预先填充)。主题活跃。
  3. 端点有效 - 我从仅显示事件网格触发器函数的下拉列表中选择了它,因此看起来我无法选择任何不是的端点。我专门创建了这个函数来测试触发器。

显然缺少一些非常基本的东西,但表格没有给出任何关于它是什么的线索。

唯一的想法是:

  1. 我没有指定事件类型过滤器,但据我所知,它默认为所有事件类型,这就是在线指南没有提及此选项的原因。
  2. 我创建的函数没有执行任何操作,但我不明白为什么这会阻止它被触发,从而成为有效的端点。

我不知所措。我已经包含了高级编辑器中显示的尝试订阅的 json(如果这提供了任何线索)...

{
"name": "testeventsub",
"properties": {
    "topic": "/subscriptions/xxxxxxxxxx/resourceGroups/DBProject/providers/Microsoft.EventGrid/topics/filings",
    "destination": {
        "endpointType": "AzureFunction",
        "properties": {
            "resourceId": "/subscriptions/xxxxxxxxxxx/resourceGroups/DBProject/providers/Microsoft.Web/sites/FilingTestEventTrigger1/functions/NewFilingTrigger1",
            "maxEventsPerBatch": 1,
            "preferredBatchSizeInKilobytes": 64
        }
    },
    "filter": {
        "advancedFilters": []
    },
    "labels": [],
    "eventDeliverySchema": "EventGridSchema"
}
Run Code Online (Sandbox Code Playgroud)

}

azure azure-functions azure-eventgrid

7
推荐指数
1
解决办法
1601
查看次数

如何保护事件网格订阅webhook

验证webhook是否已通过azure事件网格而非其他可能是恶意的服务或人员发送到我的订阅端点的最佳做法是什么.

azure-eventgrid

6
推荐指数
1
解决办法
545
查看次数

事件网格发送具有不同ID的重复事件

我已经配置了事件网格订阅,以在创建资源时启动针对资源组中事件的Web挂接调用。

Web挂钩调用已成功处理,我返回200。为保持幂等性,我将发生的所有事件webhook_events与事件ID一起存储在表中。检查任何新事件,以查看它们是否存在于该表中。

这对我来说是个问题,因为我多次接收到同一事件,但ID却不同。我通过差异检查器将其发送,并确认事件之间的唯一区别是它们的eventTime和它们的ID(但这是同一事件,即SQL数据库上的Microsoft.Resources.ResourceWriteSuccess)。

原因是事件网格多次向我发送具有不同ID的同一事件吗?

编辑:

我已与Microsoft谈过此事,他们告诉我,如果未返回接受的响应代码,则该事件将使用不同的ID复制并再次发送。这显然是一个痛苦的工作。

我立即以200 OK响应,但是事件网格太大且处理起来太慢,无法接受我的事件,因此它再次发送了事件。我想挑战任何人,寻找一种区分这些重复事件的方法。

azure azure-eventhub azure-sql-database azure-sql-server azure-eventgrid

6
推荐指数
2
解决办法
389
查看次数

Azure 事件网格函数触发器 - 试用期

我们有一个带有Azure 事件网格主题的Azure 设置,并且有一个Azure 函数服务,其中包含大约 15 个函数,这些函数通过不同的前缀过滤器订阅该主题。Azure Function Service设置为基于消耗的资源,并且应该能够根据需要进行扩展。

\n

每个订阅都设置为在放弃事件之前最多 4 小时内尝试传送 10 次。到目前为止一切顺利,设置在大多数情况下都按预期工作 \xe2\x80\x93 。

\n

在某些情况下,对于我们未知的情况,事件网格主题似乎无法将事件传递到不同的功能。我们可以看到,我们的死信存储填满了尚未传递的事件。

\n

现在回答我的问题

\n

从日志中我们可以看到各种事件未传递的原因。最常见的原因是结果缓刑。我们无法从 Microsoft 找到任何有关这实际含义的信息。

\n

此外,在超过超时策略(4 小时)和传递尝试策略(10 次重试)之前,网格会失败并将事件添加到死信日志中。有时,功能服务处于空闲状态并且没有从网格接收任何事件。

\n

你们中的任何好心人是否知道我们如何继续解决此问题?当出现错误消息“试用期”时,Grid 和 Funciton 应用程序之间发生了什么?我们注意到的一件事是,与传递的事件数量相比,从网格到函数应用程序的连接数量相当高。\n除了事件网格之外,函数应用程序没有其他传入连接。

\n

死信消息示例

\n
[{\n   "id":"a40a1f02-5ec8-46c3-a349-aea6aaff646f",\n   "eventTime":"2020-06-02T17:45:09.9710145Z",\n   "eventType":"mitbalAdded",\n   "dataVersion":"1",\n   "metadataVersion":"1",\n   "topic":"/subscriptions/XXXXXXX/resourceGroups/XXXX_STAGING/providers/Microsoft.EventGrid/topics/XXXXXstaging",\n   "subject":"odl/type/mitbal/v1",\n   "deadLetterReason":"TimeToLiveExceeded",\n   "deliveryAttempts":6,\n   "lastDeliveryOutcome":"Probation",\n   "publishTime":"2020-06-02T17:45:10.1869491Z",\n   "lastDeliveryAttemptTime":"2020-06-02T19:30:10.5756332Z",\n   "data":"<?xml version=\\"1.0\\" encoding=\\"utf-8\\"?><Stock><Action>ADD</Action><Id>123456</Id><Store>123</Store><Shelf>1</Shelf></Stock>"\n}]\n\n
Run Code Online (Sandbox Code Playgroud)\n
\n

功能服务指标

\n
    \n
  • 蓝色 = 连接数(计数)
  • \n
  • 红色 = 函数执行(计数)
  • \n
  • 白色 = …

azure azure-functions azure-eventgrid

6
推荐指数
1
解决办法
771
查看次数

通过 ARM 模板对 EndpointType 为 AzureFunction 的主题进行事件订阅

我正在尝试使用"endpointType": "AzureFunction"创建事件网格主题订阅。它给出以下错误:-

"error": { "code": "InvalidRequest", "message": "无效的事件订阅请求:提供的 URL 无效。它不能为 null 或为空,并且应该是正确的 HTTPS URL,例如https://www.example。 com。” }

我的 ARM 模板如下:-

{
      "name": "[concat(variables('eventGridTopicName'), '/Microsoft.EventGrid/', variables('myFuncName'))]",
      "type": "Microsoft.EventGrid/topics/providers/eventSubscriptions",
      "apiVersion": "2019-01-01",
      "location": "[parameters('location')]",
      "properties": {
        "topic": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('resourceGroupName'), '/providers/Microsoft.EventGrid/topics/', variables('eventGridTopicName'))]",
        "destination": {
          "endpointType": "AzureFunction",
          "properties": {
            "resourceId": "[resourceId('Microsoft.Web/sites/functions/', variables('funcAppName'), variables('myFuncName'))]",
            "maxEventsPerBatch": 1,
            "preferredBatchSizeInKilobytes": 64
          }
        },
        "filter": {
          "advancedFilters": [
            {
              "operatorType": "StringIn",
              "key": "eventType",
              "values": [
                "xyzEvent"
              ]
            },
            {
              "operatorType": "StringIn",
              "key": "subject",
              "values": [
                "xyzEventReceived"
              ] …
Run Code Online (Sandbox Code Playgroud)

azure azure-resource-manager azure-rm-template azure-functions azure-eventgrid

5
推荐指数
1
解决办法
4685
查看次数

如何将与 VNet 集成的 Azure 功能应用程序列入白名单以进行 Even Grid 订阅

我们在标准应用服务计划中托管了功能应用。为了保护功能应用程序的安全,我们将其集成到 VNet,并仅允许来自 API 管理服务的流量。现在,我们希望允许来自具有函数应用程序端点 Web 挂钩的事件网格(它具有 IoTHub 和 SignalR 订阅)的流量。

我们的一种选择是将所有事件网格 IP 范围列入白名单。我们尝试的第二个选项是允许使用网络安全组的事件网格服务标记。但是,azure 不允许 NSG 中的入站规则到 VNet。除了将所有 Event-Grid IP 范围列入白名单之外,还有其他干净的方法吗?

https://learn.microsoft.com/en-us/azure/app-service/web-sites-integrate-with-vnet#network-security-groups

azure azure-eventgrid azure-function-app

5
推荐指数
0
解决办法
498
查看次数