在 Azure Functions 中创建 Azure EventHub 消息
Create Azure EventHub Message in Azure Functions
我正在尝试使用 EventHub 和 Azure Functions 进行一些概念验证。我在 C# 中有一个通用 Webhook 函数,我想将消息传递到我的 EventHub。
我卡在 "Integrate" 选项卡上给出的参数名称上。如果我在参数中声明该名称,我必须给它一个类型。我不知道是哪种类型...我试过:
- 字符串(其他函数将其与方向一起使用,不适用于 webhooks)。
- 事件数据
- IEnumerable
我无法让它工作。如果我不这样做,我会收到错误消息:
"Missing binding argument named 'outputEventHubMessage'"
如果我输入错误的类型,我会收到消息:
"Error indexing method 'Functions.GenericWebhookCSharp1'. Microsoft.Azure.WebJobs.Host: Can't bind to parameter."
我可能有点迷失在文档中或者只是有点累了,但我很感激这里的任何帮助!
/乔金
可能您只是缺少参数中的 out
关键字。下面是一个有效的 WebHook 函数,它声明一个映射到 EventHub 输出的 out string message
参数,并通过 message = "Test Message"
.
写入 EventHub 消息
因为异步函数无法 return 输出参数,所以我将此函数设为同步(returning object
而不是 Task<object>
)。如果你想保持异步,而不是使用 out
参数,你可以改为绑定到 IAsyncCollector<string>
参数。然后,您可以通过调用收集器上的 AddAsync
方法将一条或多条消息加入队列。
可以找到有关 EventHub 绑定及其支持的类型的更多详细信息here。请注意,其他绑定遵循相同的一般模式。
#r "Newtonsoft.Json"
using System;
using System.Net;
using Newtonsoft.Json;
public static object Run(HttpRequestMessage req, out string message, TraceWriter log)
{
string jsonContent = req.Content.ReadAsStringAsync().Result;
dynamic data = JsonConvert.DeserializeObject(jsonContent);
log.Info($"Webhook was triggered! Name = {data.first}");
message = "Test Message";
var res = req.CreateResponse(HttpStatusCode.OK, new {
greeting = $"Hello {data.first} {data.last}!"
});
return res;
}
我正在尝试使用 EventHub 和 Azure Functions 进行一些概念验证。我在 C# 中有一个通用 Webhook 函数,我想将消息传递到我的 EventHub。
我卡在 "Integrate" 选项卡上给出的参数名称上。如果我在参数中声明该名称,我必须给它一个类型。我不知道是哪种类型...我试过:
- 字符串(其他函数将其与方向一起使用,不适用于 webhooks)。
- 事件数据
- IEnumerable
我无法让它工作。如果我不这样做,我会收到错误消息: "Missing binding argument named 'outputEventHubMessage'"
如果我输入错误的类型,我会收到消息: "Error indexing method 'Functions.GenericWebhookCSharp1'. Microsoft.Azure.WebJobs.Host: Can't bind to parameter."
我可能有点迷失在文档中或者只是有点累了,但我很感激这里的任何帮助!
/乔金
可能您只是缺少参数中的 out
关键字。下面是一个有效的 WebHook 函数,它声明一个映射到 EventHub 输出的 out string message
参数,并通过 message = "Test Message"
.
因为异步函数无法 return 输出参数,所以我将此函数设为同步(returning object
而不是 Task<object>
)。如果你想保持异步,而不是使用 out
参数,你可以改为绑定到 IAsyncCollector<string>
参数。然后,您可以通过调用收集器上的 AddAsync
方法将一条或多条消息加入队列。
可以找到有关 EventHub 绑定及其支持的类型的更多详细信息here。请注意,其他绑定遵循相同的一般模式。
#r "Newtonsoft.Json"
using System;
using System.Net;
using Newtonsoft.Json;
public static object Run(HttpRequestMessage req, out string message, TraceWriter log)
{
string jsonContent = req.Content.ReadAsStringAsync().Result;
dynamic data = JsonConvert.DeserializeObject(jsonContent);
log.Info($"Webhook was triggered! Name = {data.first}");
message = "Test Message";
var res = req.CreateResponse(HttpStatusCode.OK, new {
greeting = $"Hello {data.first} {data.last}!"
});
return res;
}