Azure functions Azure函数-IoTubTrigger,但它不会触发
我创建了一个带有IoT集线器触发器的azure函数。作为一个例子,我用这个 功能1.csAzure functions Azure函数-IoTubTrigger,但它不会触发,azure-functions,azure-iot-hub,Azure Functions,Azure Iot Hub,我创建了一个带有IoT集线器触发器的azure函数。作为一个例子,我用这个 功能1.cs using IoTHubTrigger = Microsoft.Azure.WebJobs.ServiceBus.EventHubTriggerAttribute; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Host; using Microsoft.ServiceBus.Messaging; using System.Tex
using IoTHubTrigger = Microsoft.Azure.WebJobs.ServiceBus.EventHubTriggerAttribute;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.ServiceBus.Messaging;
using System.Text;
using System.Net.Http;
namespace LogTheIoTHubMessage
{
public static class Function1
{
private static HttpClient client = new HttpClient();
[FunctionName("Function1")]
public static void Run([IoTHubTrigger("messages/events", Connection = "ConnectionString")]EventData message, TraceWriter log)
{
log.Info($"C# IoT Hub trigger function processed a message: {Encoding.UTF8.GetString(message.GetBytes())}");
}
}
}
local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "UseDevelopmentStorage=true",
"ConnectionString": "HostName=AAA.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=YYYYYY"
}
}
但当我测试函数时,它会启动,但触发器不会触发。为了测试,我使用
C:\Program Files\mosquitto>mosquitto_pub-d-h AAA.azure-devices.net
-i TestRaspberryPi-u“AAA.azure devices.net/TestRaspberryPi”-P“SharedAccessSignature sr=YYY”-m“noch ein test”-t
“设备/TestRaspberryPi/messages/events/readpipe/”--cafile
“c:\Projects\azureiot.pem”-p 8883-V mqttv311
客户端TestRaspberryPi发送连接客户端TestRaspberryPi接收
CONNACK(0)客户端TestRaspberryPi发送发布(d0、q0、r0、m1、,
'devices/TestRaspberryPi/messages/events/readpipe/',…(13字节))
客户端TestRaspberryPi发送断开连接
EventHubTriggerAttribute
的第一个参数是eventHubName
,而您正在传递端点名称
您必须使用端点的“事件中心兼容名称”:
“事件中心兼容端点”应用作连接字符串
顺便说一下,建议为您的触发器使用专用的消费者组
希望这有帮助。您的函数看起来都不错,只是您的连接字符串是错误的。您需要来自事件中心端点的连接字符串。应该是这样的:
Endpoint=sb://iothub-ns-xxxxxxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=*******;EntityPath=abc
请参见此处的类似示例:这是不正确的。他使用的触发属性看起来很好。不,这是正确的。(不可能有两种正确的方法吗?:))。请参阅并确定,已授予:)他还可以使用EventHubTrigger属性。在本例中,是的,他需要eventhubname。但是,由于他正在连接到IoT Hub,并且已经在使用触发器,我将坚持使用它。他正在使用
EventHubTrigger
,请看他的第1行。您能指出有关您的方法的官方文档吗?