Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Exception of type 'uPLibrary.Networking.M2Mqtt.Exceptions.MqttClientException' was thrown

Tags:

c#

mqtt

I am connecting to the mqtt and I am receiving an un-helpful exception.

Code

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

Exception Message

Exception of type 'uPLibrary.Networking.M2Mqtt.Exceptions.MqttClientException' was thrown

Stacktrace of the exception

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

I founded a bug on the github, but without solution

The exception Message is not helpful at all, and there is NO inner exception inside it.

like image 796
Hakan Fıstık Avatar asked Oct 07 '16 12:10

Hakan Fıstık


2 Answers

I was able to solve this wired exception by changing the following statement

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

to

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

it appears the mqtt has bug when specify more than one topic at the same time.

like image 169
Hakan Fıstık Avatar answered Oct 06 '22 07:10

Hakan Fıstık


Much better:

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 
    }
);
like image 5
Lucia Minerba Avatar answered Oct 06 '22 05:10

Lucia Minerba