### Question:
MqttClientProvider implements NetworkProvider<MqttClientProperties> { @Nonnull @Override public VertxMqttClient createNetwork(@Nonnull MqttClientProperties properties) { VertxMqttClient mqttClient = new VertxMqttClient(properties.getId()); initMqttClient(mqttClient, properties); return mqttClient; } MqttClientProvider(CertificateManager certificateManager, Vertx vertx); @Nonnull @Override NetworkType getType(); @Nonnull @Override VertxMqttClient createNetwork(@Nonnull MqttClientProperties properties); @Override void reload(@Nonnull Network network, @Nonnull MqttClientProperties properties); void initMqttClient(VertxMqttClient mqttClient, MqttClientProperties properties); @Nullable @Override ConfigMetadata getConfigMetadata(); @Nonnull @Override Mono<MqttClientProperties> createConfig(@Nonnull NetworkProperties properties);  }### Answer:
@Test void test() { MqttServer server = MqttServer.create(vertx); server.endpointHandler(endpoint -> { endpoint .accept() .publish("/test", Buffer.buffer("test"), MqttQoS.AT_MOST_ONCE, false, false); }).listen(11223); MqttClientProvider provider = new MqttClientProvider(id -> Mono.empty(), vertx); MqttClientProperties properties = new MqttClientProperties(); properties.setHost("127.0.0.1"); properties.setPort(11223); properties.setOptions(new MqttClientOptions()); VertxMqttClient client = provider.createNetwork(properties); client.subscribe(Arrays.asList("/test")) .map(MqttMessage::getPayload) .map(payload -> payload.toString(StandardCharsets.UTF_8)) .take(1) .as(StepVerifier::create) .expectNext("test") .verifyComplete(); }