Source:
private synchronized void connectAndSubscribe() throws MqttException { MqttConnectOptions connectionOptions = this.clientFactory.getConnectionOptions(); this.cleanSession = connectionOptions.isCleanSession(); this.consumerStopAction = this.clientFactory.getConsumerStopAction(); if (this.consumerStopAction == null) { this.consumerStopAction = ConsumerStopAction.UNSUBSCRIBE_CLEAN; } Assert.state(getUrl() != null || connectionOptions.getServerURIs() != null, "If no 'url' provided, connectionOptions.getServerURIs() must not be null"); this.client = this.clientFactory.getClientInstance(getUrl(), getClientId()); this.client.setCallback(this); this.topicLock.lock(); String[] topics = getTopic(); try { this.client.connect(connectionOptions); int[] requestedQos = getQos(); int[] grantedQos = Arrays.copyOf(requestedQos, requestedQos.length); this.client.subscribe(topics, grantedQos); for (int i = 0; i < requestedQos.length; i++) { if (grantedQos[i] != requestedQos[i]) { logger.info("Granted QOS different to Requested QOS; topics: " + Arrays.toString(topics) + " requested: " + Arrays.toString(requestedQos) + " granted: " + Arrays.toString(grantedQos)); break; } } } catch (MqttException e) { if (this.applicationEventPublisher != null) { this.applicationEventPublisher.publishEvent(new MqttConnectionFailedEvent(this, e)); } logger.error("Error connecting or subscribing to " + Arrays.toString(topics), e); this.client.disconnectForcibly(this.completionTimeout); throw e; } finally { this.topicLock.unlock(); } if (this.client.isConnected()) { this.connected = true; String message = "Connected and subscribed to " + Arrays.toString(topics); if (logger.isDebugEnabled()) { logger.debug(message); } if (this.applicationEventPublisher != null) { this.applicationEventPublisher.publishEvent(new MqttSubscribedEvent(this, message)); } } }

Target:
private synchronized void connectAndSubscribe() throws MqttException { MqttConnectOptions connectionOptions = this.clientFactory.getConnectionOptions(); this.cleanSession = connectionOptions.isCleanSession(); this.consumerStopAction = this.clientFactory.getConsumerStopAction(); if (this.consumerStopAction == null) { this.consumerStopAction = ConsumerStopAction.UNSUBSCRIBE_CLEAN; } Assert.state(getUrl() != null || connectionOptions.getServerURIs() != null, "If no 'url' provided, connectionOptions.getServerURIs() must not be null"); this.client = this.clientFactory.getClientInstance(getUrl(), getClientId()); this.client.setCallback(this); if (this.client instanceof MqttClient) { ((MqttClient) this.client).setTimeToWait(this.completionTimeout); } this.topicLock.lock(); String[] topics = getTopic(); try { this.client.connect(connectionOptions); int[] requestedQos = getQos(); int[] grantedQos = Arrays.copyOf(requestedQos, requestedQos.length); this.client.subscribe(topics, grantedQos); for (int i = 0; i < requestedQos.length; i++) { if (grantedQos[i] != requestedQos[i]) { if (logger.isWarnEnabled()) { logger.warn("Granted QOS different to Requested QOS; topics: " + Arrays.toString(topics) + " requested: " + Arrays.toString(requestedQos) + " granted: " + Arrays.toString(grantedQos)); } break; } } } catch (MqttException e) { if (this.applicationEventPublisher != null) { this.applicationEventPublisher.publishEvent(new MqttConnectionFailedEvent(this, e)); } logger.error("Error connecting or subscribing to " + Arrays.toString(topics), e); this.client.disconnectForcibly(this.completionTimeout); throw e; } finally { this.topicLock.unlock(); } if (this.client.isConnected()) { this.connected = true; String message = "Connected and subscribed to " + Arrays.toString(topics); if (logger.isDebugEnabled()) { logger.debug(message); } if (this.applicationEventPublisher != null) { this.applicationEventPublisher.publishEvent(new MqttSubscribedEvent(this, message)); } } }