运行多个实例的Azure Function EventHubTrigger

时间:2018-11-23 16:32:56

标签: c# azure azure-functions

我在运行多个Azure功能实例时遇到问题,这些实例应该针对相同的IoTHub终结点(默认实例),但针对不同的使用者组(在门户上创建了必需的组)。基本上,我想两次处理同一条消息,但功能不同。因此,我编写了两个功能项目,它们具有相同的设置(相同的存储,相同的端点和配置),并且仅针对不同的消费者组,如此处提供的示例Event Hubs features 如果我分别运行每个项目,则它们都可以正常工作,问题是,如果我先运行任何一个项目,然后再启动第二个项目,我都会得到一个错误,即IServiceProvider已废弃。输出窗口错误:

抛出异常:Microsoft.Azure.WebJobs.Script.WebHost.dll中的'System.NullReferenceException'

功能实现非常简单:

    [FunctionName("MessageFunction")]
    public static async Task Run([EventHubTrigger("myActualEventHubName", Connection = "HubConnection", ConsumerGroup = "StoreMap")]OrderRecord message, ILogger log)
    {
        try
        {
            if (message != null)
            {
                log.LogInformation($"Got a valid message");
                await Task.Delay(1000);
            }

            log.LogInformation($"Event Hub trigger function processed a message: {message}");
        }
        catch (Exception e)
        {
            log.LogError("Error while processing.", e);
        }
    }

Function error

这是可以实现的,还是我遗漏了某些东西,或者这仅仅是某些库中的错误?任何帮助表示赞赏。

.Net Core 2.1

工具: VisualStudio 15.9.2

Azure功能和Web作业工具15.10.2046.0

已安装的Nugets:

Microsoft.NET.Sdk.Functions 1.0.24

Microsoft.Azure.WebJobs.Extensions.EventHubs 3.0.1

1 个答案:

答案 0 :(得分:1)

这是由于占用的TCP端口引起的。当功能主机在本地启动时,默认情况下它将侦听端口7071。我们需要指定不同的端口,以允许多个实例一起运行。

右键单击您的项目>属性>调试,在“应用程序参数”部分添加host start -port 7072

相关问题