期待:
使用具有 EventHubTrigger-CSharp 模板的函数应用会在新事件进入时运行。
实现:
使用来自 https://azure.microsoft.com/en-us/documentation/articles/functions-bindings-event-hubs/ 的非常基本的示例
结果:
解释方法:
public static void Run(string myEventHubMessage, TraceWriter log)
{
log.Info($"C# Event Hub trigger function processed a message: {myEventHubMessage}");
}
确实提供了事件队列中的“第一个”而不是当前的。附加:
问题:
如何在我的函数应用中接收集线器上的最新事件?
更多信息:
我需要将新信号从事件中心转发到外部 mqtt api(到目前为止有效)。可能我需要另一种方法?
最佳答案
现在有办法了。
注意:为此,您必须删除存储在 azure-webjobs-eventhub
中的消费者组数据。在您连接到函数应用的存储帐户中。
我们现在可以使用 Microsoft.Azure.Functions.Extensions
在 Azure Functions 中使用依赖注入(inject)。 nuget 包。
这为我们开辟了一种方法,可以通过执行以下操作来控制 Azure Function App 从何处开始处理我们的事件中心:
using System;
using Microsoft.Azure.EventHubs;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Azure.WebJobs.EventHubs;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
[assembly: FunctionsStartup(typeof(EventHubOffsetTest.Startup))]
namespace EventHubOffsetTest
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.PostConfigure<EventHubOptions>(o => o.EventProcessorOptions.InitialOffsetProvider = GetInitialOffset);
}
private static EventPosition GetInitialOffset(string partitionId)
{
return EventPosition.FromEnd();
}
}
}
关于azure-functions - Azure EventHubTrigger 函数应用中的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40274359/