【问题标题】:Azure Service Bus: No messages on queue, only requestsAzure 服务总线:队列上没有消息,只有请求
【发布时间】:2018-01-24 11:24:25
【问题描述】:

我正在尝试使用服务总线队列作为 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}

【问题讨论】:

    标签: azure azureservicebus azure-iot-hub


    【解决方案1】:

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

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

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

    对于 Http 连接的设备:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        您没有提及客户端或协议,但如果您使用适用于 Node.js 和 AMQP 的 IoT 客户端 SDK(也可能是 MQTT),那么主体属性上的路由将不起作用。

        This blog post 暗示应该这样做,但 a bug 是最近才打开的,表明它尚未实现。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-04-22
          • 2014-11-03
          • 2017-11-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-15
          • 1970-01-01
          相关资源
          最近更新 更多