我正在尝试编写一项服务以将数据转发到累积。
传感器读取数据后,会将其发送到我们的服务器。 然后,服务器将该数据转发到我的服务。 我对其进行了解析,并使用Smart REST模板将其发送给累积量。
我查看了指南,并将代码复制到那里进行测试。 例如,设备创建消息如下所示。
public async Task ClientTest([FromBody] JObject sensorjson)
{
var cDetails = new ConnectionDetailsBuilder()
.WithClientId("clientId")
.WithHost("mqtt.cumulocity.com")
.WithCredentials("Credentials")
.WithCleanSession(true)
.(WithProtocol(TransportType.Tcp).Build();
MqttClient client = new MqttClient(cDetails);
await client.EstablishConnectionAsync();
string topic = "s/us";
string payload = $"100,TestDevice,Test";
var message = new MqttMessageRequestBuilder()
.WithTopicName(topic)
.WithQoS(QoS.AT_LEAST_ONCE)
.WithMessageContent(payload)
.Build();
await client.PublishAsync(message);
await client.Disconnect();
}
当代码是这样时,在我的累积租户中没有创建任何设备。
当我注释await client.Disconnect();
时,它会创建设备。
这是什么原因?
在我的真实代码中,如果我不断开连接,将无法保持内存使用率。如果我断开邮件连接,请不要去找经纪人。
我该怎么办?
答案 0 :(得分:0)
问题是因为您正在QOS1(至少一次)发布消息。这需要客户端和代理之间的多包握手。
await
应该意味着发布代码等待此操作完成,但是看起来并非如此,这意味着您要关闭客户端才能完成QOS1的握手