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(); }