Azure 服务总线:队列中没有消息,只有请求

Azure Service Bus: No messages on queue, only requests

我正在尝试使用服务总线队列作为物联网中心端点将消息从物联网中心路由到函数应用程序。我发送到 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}

消息 body 的路由表达式是正确的。看起来,您的活动消息缺少内容类型和内容编码 headers,请参阅更多详细信息 here

如果您的设备是 MQTT 直接连接,请使用以下主题,以设备 1 为例:

devices/Device1/messages/events/$.ce=utf-8&$.ct=application%2Fjson

对于 Http 连接的设备:

content-encoding:utf-8
content-type:application/json

除了@Roman Kiss 指出的之外,请确保启用服务总线的 listen permission 以接收消息。

您可以按照“Read from the queue endpoint”接收路由到服务总线队列的消息。

您没有提到客户端或协议,但如果您使用的是用于 Node.js 和 AMQP(也许还有 MQTT)的 IoT 客户端 SDK,则主体属性上的路由不起作用。

This blog post implies it should, but a bug 最近才打开,表示尚未实现。