public Task Handle(MqttReceivedMessage message, IMessageHandlerContext context) { var topicDevice = new TopicDevice { Name = message.ClientId, Topic = message.Message.Topic, Payload = message.Message.Payload != null?Encoding.UTF8.GetString(message.Message.Payload) : "" }; Task.Run(async() => await _deviceService.ReceiveMqttMessageAsync(topicDevice).ConfigureAwait(false)); return(context.Reply(HttpStatusCode.OK)); }
public async Task ReceiveMqttMessageAsync(TopicDevice topicDevice) { using (var context = _contextFactory.GetMongoContext()) { var filter = new BsonDocument("$and", new BsonArray { new BsonDocument("Name", topicDevice.Name), new BsonDocument("Topic", topicDevice.Topic) }); var update = new BsonDocument("Payload", topicDevice.Payload); var result = await context.TopicDevices.FindOneAndUpdateAsync(filter, update); if (result == null) { await context.TopicDevices.InsertOneAsync(_mapper.Map <IM.TopicDevice>(topicDevice)); } } }