当前位置: 首页 > 知识库问答 >
问题:

事件集线器的事件网格订阅,以获取特定分区中的日志

国言
2023-03-14

创建事件网格订阅并使用eventhub作为endpoint时,无法指定所有消息应该发送到的partitionID。通过Webhook可能吗?我发现通过Rest API可以做到这一点。它使用以下url。https://{ service namespace } . service bus . windows . net/{ eventHubPath }/publishers/{ device id }/messages。我正试图将这些事件吸收到事件中心。但是我想要的是这些事件被摄取到事件中心的特定分区中。是否可能通过事件订阅(可能通过将deviceid作为参数传递)?或者有没有其他方法来配置事件订阅,以便将这些事件路由到event hub中的特定partitionID。

我使用nodejs编写无服务器代码,并通过azure门户创建事件网格订阅。

附言:我从Azure支持团队确认,目前不支持此功能,必须使用Azure函数将事件定向到特定分区ID。

共有1个答案

鲜于谦
2023-03-14

最低限度的集成是使用一个EventGridTrigger函数,其输出绑定到EventHub,请参见以下实现:

#r "Newtonsoft.Json"
#r "Microsoft.ServiceBus"

using System;
using System.Text;
using Newtonsoft.Json;
using Microsoft.ServiceBus.Messaging;

public static void Run(string eventGridEvent, ICollector<EventData> collector, TraceWriter log)
{
    log.Info(eventGridEvent);

    EventData ed = new EventData(new MemoryStream(Encoding.UTF8.GetBytes(eventGridEvent))) { PartitionKey="myPartition"};
    collector.Add(ed);
}

以及功能。json文件:

    {
      "bindings": [
      {
        "type": "eventGridTrigger",
        "name": "eventGridEvent",
        "direction": "in"
    },
    {
        "type": "eventHub",
        "name": "collector",
        "connection": "myEventHubConnectionString",
        "path": "myEventHubName",
        "direction": "out"
    }
  ],
  "disabled": false
 }

此外,您可以使用HttpTrigger函数,但该函数需要处理验证消息

 类似资料:
  • 基本上,我试图使用ARM部署一个事件网格订阅来收集订阅中的特定事件(主题类型= Azure订阅)。我已经有一个创建了事件网格触发功能的功能应用程序,只需要将该功能与事件网格订阅绑定为webhook。 我正在使用Azure DevOps中的发布管道来自动化整个工作流。 以下是我使用的一个示例: 这最终部署了事件网格主题,而不是事件网格订阅。 然后,有人建议我尝试以下操作: 但是这最终以这个错误而失败

  • Node.js应用程序可以使用composer-client.BusinessNetworkConnection.onAPI调用从业务网络订阅事件。事件在业务网络模型文件中定义,并由交易处理函数文件中的指定交易处理。有关发布事件的更多信息,请参阅发布事件。 在你开始之前 在应用程序可以订阅事件之前,你必须定义一些事件和发送它们的交易。还必须部署业务网络,并且必须具有可连接到该业务网络的连接配置文件

  • 我可以在Azure Key Vault中创建事件订阅,但它只允许系统事件网格主题,而不允许自定义事件网格主题。我的首选是自定义事件网格主题,因为我可以分配一个托管标识,并向该托管标识授予必要的RBAC。 是否可以将Azure Key Vault配置为将事件发送到自定义事件网格主题? 这是一个示例自定义事件网格主题:

  • 我正试图开发一个Azure函数来处理由事件中心的捕获功能创建的blob。然而,尽管捕获blobs被正确地存储在容器中,但似乎没有< code>Microsoft。EventHub . capturefile created 事件发布到函数订阅。功能endpoint的事件订阅已创建,没有错误,Azure CLI的输出为 该函数的主体是一个标准的Http触发器,其中包含事件网格endpoint订阅所需

  • 我正在尝试过滤事件网格中的事件,使其仅在我的订阅中的Azure功能更改时触发(例如配置更改、代码更新或创建/删除新功能)。 我使用的 PowerShell 脚本如下所示: 这将过滤到所有功能和网站(请检查<code>和$AdvancedFilters)。是否有任何方法可以将事件仅过滤到Azure函数?欢迎使用Azure CLI、portal、Powershell或.net sdk中的任何解决方案帮

  • 我无法在Azure事件网格中添加新的WebHook订阅。有人能帮忙吗?当我添加webhookendpoint时,出现以下错误。