首页 文章

Azure Service Bus:队列中没有消息,只有请求

提问于
浏览
1

我正在尝试使用服务总线队列作为Iot集线器 endpoints 将消息从IoT集线器路由到功能应用程序 . 我发送到IoT集线器的消息已在IoT集线器中注册,但不会路由到服务总线队列 . 当我监视服务总线队列时,我只看到成功的请求 .

IoT hub example

Service bus example

我使用以下标准实现了两个路由规则:

$._eventtype="meeting"

$body._eventtype="meeting"

我使用Azure提供的示例测试了第二个,并且它匹配 . 他们似乎都没有将消息转发到服务总线 .

在下面找到我正在尝试路由的示例消息 .

{"_room": "-----", 
 "_eventtype": "meeting", 
 "_temperature": 25, 
 "_building": "-----", 
 "_timestamp": "2018-01-24T11:08:13.056792Z", 
 "_humidity": 36, 
 "_id": 0}

3 回答

  • 0

    邮件正文的路由表达式是正确的 . 看起来,您的事件消息缺少内容类型和内容编码标头,请参阅更多详细信息here .

    在这种情况下,当您的设备是MQTT直接连接时,请使用以下主题,例如Device1:

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

    对于Http连接设备:

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

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

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

  • 3

    您没有提到客户端或协议,但如果您使用的是针对Node.js和AMQP的IoT Client SDK(也许是MQTT),那么在body属性上的路由不起作用 .

    This blog post暗示它应该,但a bug最近才开启,表明它尚未实施 .

相关问题