예제 #1
0
        protected override async Task OnApplicationMessageReceived(MqttApplicationMessageReceivedEventArgs arg)
        {
            //    截取Topic的最后topicName使用作为消息队列的Key
            var topicName = arg.ApplicationMessage.Topic;

            topicName = topicName.Substring(topicName.LastIndexOf('/') + 1);
            //    因为每一次推过来的都是同一个实例,所以在此进行拷贝
            var message =
                JsonSerializer.Deserialize <BoxMqttApplicationMessage>(
                    JsonSerializer.Serialize(arg.ApplicationMessage));

            //    当前Client为盒子号
            message.BoxNo     = arg.ClientId;
            message.TopicName = topicName;
            //    将数据添加到消息队列,以便处理
            _messageQueueManager.Enqueue(topicName, message);
            await new ValueTask();
        }