static void Main(string[] args) { //此处填写购买得到的 MQTT 接入点域名 String brokerUrl = ConfigurationManager.AppSettings["Mqtt_BrokerUrl"]; //此处填写阿里云帐号 AccessKey String accessKey = ConfigurationManager.AppSettings["Mqtt_AccessKey"]; //此处填写阿里云帐号 SecretKey String secretKey = ConfigurationManager.AppSettings["Mqtt_SecretKey"]; //此处填写在 MQ 控制台创建的 Topic,作为 MQTT 的一级 Topic String parentTopic = ConfigurationManager.AppSettings["Mqtt_ParentTopic"]; //此处填写客户端 ClientId,需要保证全局唯一,其中前缀部分即 GroupId 需要先在 MQ 控制台创建 String clientId = ConfigurationManager.AppSettings["Mqtt_GroupId"] + "@@@" + MainHelper.GetRandomString(16, true, true, true, false, "crm"); MqttClient client = new MqttClient(brokerUrl); client.MqttMsgPublishReceived += client_recvMsg; client.MqttMsgPublished += client_publishSuccess; client.ConnectionClosed += client_connectLose; String userName = accessKey; //计算签名 String passWord = MainHelper.HMACSHA1(secretKey, clientId.Split('@')[0]); client.Connect(clientId, userName, passWord, true, 60); //订阅 Topic,支持多个 Topic,以及多级 Topic //string[] subTopicArray = { parentTopic + "/subDemo1", parentTopic + "/subDemo2/level3" }; string[] subTopicArray = { parentTopic + "/School/", parentTopic + "/School/Sub1" }; byte[] qosLevels = { MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE, MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE }; client.Subscribe(subTopicArray, qosLevels); Console.WriteLine(DateTime.Now.ToString() + " 开始接收消息队列信息!"); LogHelper.WriteProgramLog(DateTime.Now.ToString() + " 开始接收消息队列信息!"); //client.Publish(parentTopic + "/School/", Encoding.UTF8.GetBytes("接收成功!"), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false); ////发送 P2P 消息,二级 topic 必须是 p2p,三级 topic 是接收客户端的 clientId //client.Publish(parentTopic + "/p2p/" + clientId, Encoding.UTF8.GetBytes("hello mqtt"), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false); //System.Threading.Thread.Sleep(50000); //client.Disconnect(); }