事件中心的事件网格订阅,用于在特定分区中获取日志

时间:2018-05-31 13:00:52

标签: azure azure-eventhub azure-eventgrid

创建事件网格订阅并将eventhub用作端点时,无法指定应将所有消息发送到的partitionID。是否有可能通过Webhook? 我发现通过Rest API可以看到这里。它使用以下URL。 HTTPS:// {serviceNamespace} .servicebus.windows.net / {eventHubPath} /出版者/ {DEVICEID} /消息。 我试图将这些事件摄取到事件中心。但我想要的是那些事件被摄入事件中心的特定分区。 是否可以通过事件订阅(可能通过传递deviceid作为参数)?或者是否有任何其他方法来配置事件订阅以将这些事件路由到事件中心中的特定分区ID。

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

P.S。我从Azure支持团队确认当前不支持此功能,并且必须使用Azure功能将事件定向到特定的分区ID。

1 个答案:

答案 0 :(得分:1)

最小集成是使用带有输出绑定到EventHub的EventGridTrigger函数,请参阅以下实现:

#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);
}

和function.json文件:

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

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