public void Setup() { TopicGenerator.Generate(NumPublishers, NumTopicsPerPublisher, out var topicsByPublisher, out var singleWildcardTopicsByPublisher, out var multiWildcardTopicsByPublisher); _topics = topicsByPublisher.Values.First(); var serverOptions = new MqttServerOptionsBuilder().WithDefaultEndpoint().Build(); var factory = new MqttFactory(); _mqttServer = factory.CreateMqttServer(serverOptions); _mqttClient = factory.CreateMqttClient(); _mqttServer.StartAsync().GetAwaiter().GetResult(); var clientOptions = new MqttClientOptionsBuilder() .WithTcpServer("localhost").Build(); _mqttClient.ConnectAsync(clientOptions).GetAwaiter().GetResult(); foreach (var topic in _topics) { var subscribeOptions = new MqttClientSubscribeOptionsBuilder() .WithTopicFilter(topic, Protocol.MqttQualityOfServiceLevel.AtMostOnce) .Build(); _mqttClient.SubscribeAsync(subscribeOptions).GetAwaiter().GetResult(); } }
public void Subscribe_10000_Topics() { foreach (var topic in _topics) { var subscribeOptions = new MqttClientSubscribeOptionsBuilder() .WithTopicFilter(topic, Protocol.MqttQualityOfServiceLevel.AtMostOnce) .Build(); _mqttClient.SubscribeAsync(subscribeOptions).GetAwaiter().GetResult(); } }
public static Task <MqttClientSubscribeResult> SubscribeAsync(this MqttClient mqttClient, MqttTopicFilter topicFilter, CancellationToken cancellationToken = default) { if (mqttClient == null) { throw new ArgumentNullException(nameof(mqttClient)); } if (topicFilter == null) { throw new ArgumentNullException(nameof(topicFilter)); } var subscribeOptions = new MqttClientSubscribeOptionsBuilder().WithTopicFilter(topicFilter) .Build(); return(mqttClient.SubscribeAsync(subscribeOptions, cancellationToken)); }
public static Task <MqttClientSubscribeResult> SubscribeAsync( this MqttClient mqttClient, string topic, MqttQualityOfServiceLevel qualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce, CancellationToken cancellationToken = default) { if (mqttClient == null) { throw new ArgumentNullException(nameof(mqttClient)); } if (topic == null) { throw new ArgumentNullException(nameof(topic)); } var subscribeOptions = new MqttClientSubscribeOptionsBuilder().WithTopicFilter(topic, qualityOfServiceLevel) .Build(); return(mqttClient.SubscribeAsync(subscribeOptions, cancellationToken)); }