Пример #1
0
        public async Task Execute(object state)
        {
            var keys = redisCacheService.GetKeys();

            foreach (var key in keys)
            {
                try
                {
                    var len = await redisCacheService.LengthAsync(key);

                    for (var i = 0; i < len; i++)
                    {
                        var value = await redisCacheService.PopBackAsync(key);

                        var message = MqttBroadcastMessage.ParseFromJson(value);
                        switch (message.Topic)
                        {
                        case Topics.HomeTemperatureHumidity:
                            await temperatureHumidityRepository.CreateAsync(message.ToTemperatureHumidityModel());

                            break;

                        case Topics.HomeMotionSense:
                            await motionDetectionRepository.CreateAsync(message.ToMotionDetectionModel());

                            break;
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
        }
Пример #2
0
        public async Task HandleApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs eventArgs)
        {
            var payload = Encoding.ASCII.GetString(eventArgs.ApplicationMessage.Payload);
            var message = new MqttBroadcastMessage
            {
                Payload  = System.Text.Encoding.ASCII.GetString(eventArgs.ApplicationMessage.Payload),
                Topic    = eventArgs.ApplicationMessage.Topic,
                ClientId = eventArgs.ClientId,
                Date     = System.DateTime.Now
            }.ToJsonString();
            await redisCacheService.PushBackAsync(eventArgs.ApplicationMessage.Topic, message);

            logger.Information(message);
        }