c++ - Azure IoT Edge C++ 模块未将设备发送到云遥测

标签 c++ azure iot azure-iot-edge

我编写了一个 IoT Edge C++ 模块,该模块使用以下函数调用发送事件输出:

bool IoTEdgeClient::sendMessageAsync(std::string message)
{
    bool retVal = false;

    LOGGER_TRACE(IOT_CONNECTION_LOG, className + "::sendMessageAsync(...) START");
    LOGGER_DEBUG(IOT_CONNECTION_LOG, className + "::sendMessageAsync(...) message : " << message);

    Poco::Mutex::ScopedLock lock(_accessMutex);

    MESSAGE_INSTANCE *messageInstance = CreateMessageInstance(message);

    IOTHUB_CLIENT_RESULT clientResult = IoTHubModuleClient_LL_SendEventToOutputAsync(_iotHubModuleClientHandle, messageInstance->messageHandle, "output1", SendConfirmationCallback, messageInstance);
    if (clientResult != IOTHUB_CLIENT_OK)
    {
        LOGGER_ERROR(IOT_CONNECTION_LOG, className + "::sendMessageAsync(...) ERROR : " << message << " Message id: " << messageInstance->messageTrackingId);
        retVal = false;
    }
    else
    {
        retVal = true;
    }

    LOGGER_TRACE(IOT_CONNECTION_LOG, className + "::sendMessageAsync(...) END");
    return retVal;
}

函数调用 IoTHubModuleClient_LL_SendEventToOutputAsync 的结果始终为 IOTHUB_CLIENT_OK。我的模块名称是MicroServer,配置的路由是:

FROM /messages/modules/MicroServer/outputs/output1 INTO $upstream

我没有看到 SendConfirmationCallback 函数被调用。此外,我没有看到 IoT 中心中出现任何设备到云消息。有什么想法为什么会发生这种情况以及如何解决它吗?

最佳答案

事实证明,我每秒至少需要调用这个函数几次

IoTHubModuleClient_LL_DoWork(_iotHubModuleClientHandle);

我没有这样做。结果,代码无法正常工作。一旦我开始这样做。代码刚刚工作。

关于c++ - Azure IoT Edge C++ 模块未将设备发送到云遥测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72035480/

相关文章:

android - 在防火墙后接收回复

amazon-web-services - Sim 7080 AT 命令通过 MQTTS 连接到 AWS IOT

c++ - 我可以让 std::list 按顺序插入新元素吗?或者必须使用 std::sort?

c++ - 字符串数组/字符数组

c# - Windows Azure 部署 - 未加载文件或程序集 'Newtonsoft.Json'

azure - 从 Azure 用户定义的输出器读取模板

json - AWS IoT JSON 错误

c++ - 如何将请求的客户端连接的 IP 与 QTcpSocket 类中已识别的 IP 之一进行比较?

C++如何知道在状态模式中转发声明的位置

Azure 服务总线 http 与 websocket