我尝试使用服务总线队列作为Iot集线器端点,将消息从IoT集线器路由到功能应用。我发送到IoT集线器的消息在IoT集线器中注册,但不会被路由到服务总线队列。当我监视服务总线队列时,我只看到成功的请求。
我使用以下标准实施了两个路由规则:
$._eventtype="meeting"
和
$body._eventtype="meeting"
我使用Azure提供的示例测试了第二个,并且匹配了。 他们似乎都没有将消息转发到服务总线。
在下面找到我尝试路由的示例消息。
{"_room": "-----",
"_eventtype": "meeting",
"_temperature": 25,
"_building": "-----",
"_timestamp": "2018-01-24T11:08:13.056792Z",
"_humidity": 36,
"_id": 0}
答案 0 :(得分:3)
邮件正文的路由表达式是正确的。看起来,您的事件消息缺少内容类型和内容编码标头,请参阅更多详细信息here。
如果您的设备是MQTT直接连接,请使用以下主题,例如Device1:
devices/Device1/messages/events/$.ce=utf-8&$.ct=application%2Fjson
用于Http连接设备:
content-encoding:utf-8
content-type:application/json
答案 1 :(得分:0)
除了@Roman Kiss指出外,请确保启用服务总线的listen permission以接收消息。
您可以按照“Read from the queue endpoint”接收路由到服务总线队列的消息。
答案 2 :(得分:0)
您没有提及客户端或协议,但如果您使用的是针对Node.js和AMQP的IoT Client SDK(也许也是MQTT),那么在body属性上进行路由不起作用。
This blog post暗示它应该,但a bug最近才开启,表明它尚未实施。