public async Task InitializePublisher(ClientConfiguration configuration) { var options = new MqttClientOptionsBuilder() .WithClientId(configuration.ClientId) .WithCleanSession(false) .WithTcpServer(configuration.Host, configuration.Port) .WithCredentials(configuration.Username, configuration.Password) .WithKeepAlivePeriod(TimeSpan.FromMilliseconds(configuration.KeepAlivePeriod)) .WithCommunicationTimeout(TimeSpan.FromMilliseconds(configuration.CommunicationTimeout)).Build(); var mqttClient = new MqttFactory().CreateMqttClient(); var connectResult = await mqttClient.ConnectAsync(options); Console.WriteLine($"Publisher connection result : {connectResult.ResultCode}"); var rpcOptions = new MqttRpcClientOptions() { TopicGenerationStrategy = new DefaultMqttRpcClientTopicGenerationStrategy() }; var rpcClient = new MqttRpcClient(mqttClient, rpcOptions); var command = new CommandDto { Id = 1, Message = "Say Hello world!" }; var payload = JsonConvert.SerializeObject(command); Console.WriteLine($"Publisher requesting work \"DoWork\" with Id : 1"); var responseMqtt = await rpcClient.ExecuteAsync(TimeSpan.FromSeconds(50), "DoWork", payload, MqttQualityOfServiceLevel.AtLeastOnce); var response = Encoding.Default.GetString(responseMqtt); Console.WriteLine($"Publisher got response : {response}"); }
public async Task <MqttRpcClient> ConnectRpcClient(MqttRpcClientOptions options) { return(new MqttRpcClient(await ConnectClient(), options)); }