2016-10-07 723 views
1

我正在连接到mqtt,我收到了一个无用的异常。类型'uPLibrary.Networking.M2Mqtt.Exceptions.MqttClientException'的异常被抛出

代码

string smsTopic = ConfigurationManager.AppSettings["MQTT_SMS_Topic"]; 
string emailTopic = ConfigurationManager.AppSettings["MQTT_Email_Topic"]; 
string pushTopic = ConfigurationManager.AppSettings["MQTT_PUSH_Topic"]; 
string socialTopic = ConfigurationManager.AppSettings["MQTT_SOCIAL_Topic"]; 

client = new MqttClient("somehostname"); 
string clientId = Guid.NewGuid().ToString(); 
client.Connect(clientId); 
client.MqttMsgPublishReceived += client_MqttMsgPublishReceived; 
client.Subscribe(new string[] { smsTopic, emailTopic, pushTopic, socialTopic }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); 

异常消息

类型 'uPLibrary.Networking.M2Mqtt.Exceptions.MqttClientException' 引发的异常的

堆栈跟踪例外

at uPLibrary.Networking.M2Mqtt.Messages.MqttMsgSubscribe.GetBytes(Byte protocolVersion) in c:\Users\ppatierno\Source\Repos\m2mqtt\M2Mqtt\Messages\MqttMsgSubscribe.cs:line 187 
at uPLibrary.Networking.M2Mqtt.MqttClient.Send(MqttMsgBase msg) in c:\Users\ppatierno\Source\Repos\m2mqtt\M2Mqtt\MqttClient.cs:line 1028 
at uPLibrary.Networking.M2Mqtt.MqttClient.ProcessInflightThread() in c:\Users\ppatierno\Source\Repos\m2mqtt\M2Mqtt\MqttClient.cs:line 1954 
at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
at System.Threading.ThreadHelper.ThreadStart() 

我成立了一个bug on the github,但没有解决

异常消息是无益可言,而且,里面有没有内在的异常。

回答

0

我能够通过改变以下语句

client.Subscribe(new string[] { smsTopic, emailTopic, pushTopic, socialTopic }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); 

解决这个有线例外

client.Subscribe(new string[] { smsTopic }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); 
client.Subscribe(new string[] { emailTopic }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); 
client.Subscribe(new string[] { pushTopic }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); 
client.Subscribe(new string[] { socialTopic }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); 

它出现在mqtt有错误时,同时指定多个主题。

2

好多了:

client.Subscribe(new string[] 
    { smsTopic, emailTopic, pushTopic, socialTopic }, 
    new byte[] { 
     MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, 
     MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, 
     MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, 
     MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE 
    } 
); 
+0

这也为我工作。 –

相关问题