Class Mqttv5PahoMessageDrivenChannelAdapter
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.endpoint.AbstractEndpoint
org.springframework.integration.endpoint.MessageProducerSupport
org.springframework.integration.mqtt.inbound.AbstractMqttMessageDrivenChannelAdapter
org.springframework.integration.mqtt.inbound.Mqttv5PahoMessageDrivenChannelAdapter
- All Implemented Interfaces:
org.eclipse.paho.mqttv5.client.MqttCallback,org.springframework.beans.factory.Aware,org.springframework.beans.factory.BeanFactoryAware,org.springframework.beans.factory.BeanNameAware,org.springframework.beans.factory.DisposableBean,org.springframework.beans.factory.InitializingBean,org.springframework.beans.factory.SmartInitializingSingleton,org.springframework.context.ApplicationContextAware,org.springframework.context.ApplicationEventPublisherAware,org.springframework.context.Lifecycle,org.springframework.context.Phased,org.springframework.context.SmartLifecycle,org.springframework.integration.context.ExpressionCapable,org.springframework.integration.core.MessageProducer,org.springframework.integration.IntegrationPattern,MqttComponent<org.eclipse.paho.mqttv5.client.MqttConnectionOptions>,org.springframework.integration.support.context.NamedComponent,org.springframework.integration.support.management.ManageableLifecycle,org.springframework.integration.support.management.ManageableSmartLifecycle,org.springframework.integration.support.management.TrackableComponent
public class Mqttv5PahoMessageDrivenChannelAdapter extends AbstractMqttMessageDrivenChannelAdapter implements org.eclipse.paho.mqttv5.client.MqttCallback, MqttComponent<org.eclipse.paho.mqttv5.client.MqttConnectionOptions>
The
AbstractMqttMessageDrivenChannelAdapter implementation for MQTT v5.
The MqttProperties are mapped via the provided HeaderMapper;
meanwhile the regular MqttMessage properties are always mapped into headers.
It is recommended to have the MqttConnectionOptions.setAutomaticReconnect(boolean)
set to true to let an internal IMqttAsyncClient instance to handle reconnects.
Otherwise, the manual restart of this component can only handle reconnects, e.g. via
MqttConnectionFailedEvent handling on disconnection.
See setPayloadType(java.lang.Class<?>) for more information about type conversion.- Since:
- 5.5.5
-
Field Summary
Fields inherited from class org.springframework.integration.mqtt.inbound.AbstractMqttMessageDrivenChannelAdapter
DEFAULT_COMPLETION_TIMEOUT, topicLockFields inherited from class org.springframework.integration.endpoint.AbstractEndpoint
lifecycleCondition, lifecycleLock -
Constructor Summary
Constructors Constructor Description Mqttv5PahoMessageDrivenChannelAdapter(java.lang.String url, java.lang.String clientId, java.lang.String... topic)Mqttv5PahoMessageDrivenChannelAdapter(org.eclipse.paho.mqttv5.client.MqttConnectionOptions connectionOptions, java.lang.String clientId, java.lang.String... topic) -
Method Summary
Modifier and Type Method Description voidaddTopic(java.lang.String topic, int qos)Add a topic to the subscribed list.voidauthPacketArrived(int reasonCode, org.eclipse.paho.mqttv5.common.packet.MqttProperties properties)voidconnectComplete(boolean reconnect, java.lang.String serverURI)voiddeliveryComplete(org.eclipse.paho.mqttv5.client.IMqttToken token)voiddisconnected(org.eclipse.paho.mqttv5.client.MqttDisconnectResponse disconnectResponse)protected voiddoStart()protected voiddoStop()org.eclipse.paho.mqttv5.client.MqttConnectionOptionsgetConnectionInfo()Return information about the connection.voidmessageArrived(java.lang.String topic, org.eclipse.paho.mqttv5.common.MqttMessage mqttMessage)voidmqttErrorOccurred(org.eclipse.paho.mqttv5.common.MqttException exception)protected voidonInit()voidremoveTopic(java.lang.String... topic)Remove a topic (or topics) from the subscribed list.voidsetConverter(MqttMessageConverter converter)voidsetHeaderMapper(org.springframework.integration.mapping.HeaderMapper<org.eclipse.paho.mqttv5.common.packet.MqttProperties> headerMapper)voidsetMessageConverter(org.springframework.messaging.converter.SmartMessageConverter messageConverter)voidsetPayloadType(java.lang.Class<?> payloadType)Set the type of the target message payload to produce after conversion from MQTT message.voidsetPersistence(org.eclipse.paho.mqttv5.client.MqttClientPersistence persistence)Methods inherited from class org.springframework.integration.mqtt.inbound.AbstractMqttMessageDrivenChannelAdapter
addTopic, addTopics, getApplicationEventPublisher, getClientId, getCompletionTimeout, getComponentType, getConverter, getQos, getTopic, getUrl, isManualAcks, setApplicationEventPublisher, setCompletionTimeout, setManualAcks, setQosMethods inherited from class org.springframework.integration.endpoint.MessageProducerSupport
afterSingletonsInstantiated, buildErrorMessage, getErrorChannel, getErrorMessageAttributes, getIntegrationPatternType, getMessagingTemplate, getOutputChannel, sendErrorMessageIfNecessary, sendMessage, setErrorChannel, setErrorChannelName, setErrorMessageStrategy, setOutputChannel, setOutputChannelName, setSendTimeout, setShouldTrack, subscribeToPublisherMethods inherited from class org.springframework.integration.endpoint.AbstractEndpoint
destroy, doStop, getPhase, getRole, isActive, isAutoStartup, isRunning, setAutoStartup, setPhase, setRole, start, stop, stopMethods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.springframework.integration.mqtt.core.MqttComponent
getBeanName
-
Constructor Details
-
Mqttv5PahoMessageDrivenChannelAdapter
public Mqttv5PahoMessageDrivenChannelAdapter(java.lang.String url, java.lang.String clientId, java.lang.String... topic) -
Mqttv5PahoMessageDrivenChannelAdapter
public Mqttv5PahoMessageDrivenChannelAdapter(org.eclipse.paho.mqttv5.client.MqttConnectionOptions connectionOptions, java.lang.String clientId, java.lang.String... topic)
-
-
Method Details
-
getConnectionInfo
public org.eclipse.paho.mqttv5.client.MqttConnectionOptions getConnectionInfo()Description copied from interface:MqttComponentReturn information about the connection.- Specified by:
getConnectionInfoin interfaceMqttComponent<org.eclipse.paho.mqttv5.client.MqttConnectionOptions>- Returns:
- the information.
-
setPersistence
public void setPersistence(@Nullable org.eclipse.paho.mqttv5.client.MqttClientPersistence persistence) -
setConverter
- Overrides:
setConverterin classAbstractMqttMessageDrivenChannelAdapter
-
setMessageConverter
public void setMessageConverter(org.springframework.messaging.converter.SmartMessageConverter messageConverter) -
setPayloadType
public void setPayloadType(java.lang.Class<?> payloadType)Set the type of the target message payload to produce after conversion from MQTT message. Defaults tobyte[].class- just extract MQTT message payload without conversion. Can be set toMqttMessageclass to produce the whole MQTT message as a payload.- Parameters:
payloadType- the expected payload type to convert MQTT message to.
-
setHeaderMapper
public void setHeaderMapper(org.springframework.integration.mapping.HeaderMapper<org.eclipse.paho.mqttv5.common.packet.MqttProperties> headerMapper) -
onInit
protected void onInit()- Overrides:
onInitin classorg.springframework.integration.endpoint.MessageProducerSupport
-
doStart
protected void doStart()- Overrides:
doStartin classorg.springframework.integration.endpoint.MessageProducerSupport
-
doStop
protected void doStop()- Overrides:
doStopin classorg.springframework.integration.endpoint.MessageProducerSupport
-
addTopic
public void addTopic(java.lang.String topic, int qos)Description copied from class:AbstractMqttMessageDrivenChannelAdapterAdd a topic to the subscribed list.- Overrides:
addTopicin classAbstractMqttMessageDrivenChannelAdapter- Parameters:
topic- The topic.qos- The qos.
-
removeTopic
public void removeTopic(java.lang.String... topic)Description copied from class:AbstractMqttMessageDrivenChannelAdapterRemove a topic (or topics) from the subscribed list.- Overrides:
removeTopicin classAbstractMqttMessageDrivenChannelAdapter- Parameters:
topic- The topic.
-
messageArrived
public void messageArrived(java.lang.String topic, org.eclipse.paho.mqttv5.common.MqttMessage mqttMessage)- Specified by:
messageArrivedin interfaceorg.eclipse.paho.mqttv5.client.MqttCallback
-
disconnected
public void disconnected(org.eclipse.paho.mqttv5.client.MqttDisconnectResponse disconnectResponse)- Specified by:
disconnectedin interfaceorg.eclipse.paho.mqttv5.client.MqttCallback
-
mqttErrorOccurred
public void mqttErrorOccurred(org.eclipse.paho.mqttv5.common.MqttException exception)- Specified by:
mqttErrorOccurredin interfaceorg.eclipse.paho.mqttv5.client.MqttCallback
-
deliveryComplete
public void deliveryComplete(org.eclipse.paho.mqttv5.client.IMqttToken token)- Specified by:
deliveryCompletein interfaceorg.eclipse.paho.mqttv5.client.MqttCallback
-
connectComplete
public void connectComplete(boolean reconnect, java.lang.String serverURI)- Specified by:
connectCompletein interfaceorg.eclipse.paho.mqttv5.client.MqttCallback
-
authPacketArrived
public void authPacketArrived(int reasonCode, org.eclipse.paho.mqttv5.common.packet.MqttProperties properties)- Specified by:
authPacketArrivedin interfaceorg.eclipse.paho.mqttv5.client.MqttCallback
-