我在运行多个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);
}
}
这是可以实现的,还是我遗漏了某些东西,或者这仅仅是某些库中的错误?任何帮助表示赞赏。
.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
答案 0 :(得分:1)
这是由于占用的TCP端口引起的。当功能主机在本地启动时,默认情况下它将侦听端口7071。我们需要指定不同的端口,以允许多个实例一起运行。
右键单击您的项目>属性>调试,在“应用程序参数”部分添加host start -port 7072
。