Class MqttPahoMessageHandler
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.handler.MessageHandlerSupport
org.springframework.integration.handler.AbstractMessageHandler
org.springframework.integration.mqtt.outbound.AbstractMqttMessageHandler
org.springframework.integration.mqtt.outbound.MqttPahoMessageHandler
- All Implemented Interfaces:
org.eclipse.paho.client.mqttv3.MqttCallback
,org.reactivestreams.Subscriber<Message<?>>
,Aware
,BeanFactoryAware
,BeanNameAware
,DisposableBean
,InitializingBean
,ApplicationContextAware
,ApplicationEventPublisherAware
,Lifecycle
,Ordered
,ExpressionCapable
,Orderable
,IntegrationPattern
,MqttComponent<org.eclipse.paho.client.mqttv3.MqttConnectOptions>
,MqttPahoComponent
,NamedComponent
,IntegrationManagement
,ManageableLifecycle
,TrackableComponent
,MessageHandler
,reactor.core.CoreSubscriber<Message<?>>
public class MqttPahoMessageHandler extends AbstractMqttMessageHandler implements org.eclipse.paho.client.mqttv3.MqttCallback, MqttPahoComponent, ApplicationEventPublisherAware
Eclipse Paho Implementation. When consuming
MqttIntegrationEvent
s
published by this component use MqttPahoComponent handler = event.getSourceAsType()
to get a
reference, allowing you to obtain the bean name and MqttConnectOptions
. This
technique allows consumption of events from both inbound and outbound endpoints in the
same event listener.- Since:
- 4.0
- Author:
- Gary Russell, Artem Bilan
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.springframework.integration.support.management.IntegrationManagement
IntegrationManagement.ManagementOverrides
-
Field Summary
Fields Modifier and Type Field Description static long
DEFAULT_COMPLETION_TIMEOUT
The default completion timeout in milliseconds.static long
DISCONNECT_COMPLETION_TIMEOUT
The default disconnect completion timeout in milliseconds.Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
EXPRESSION_PARSER, logger
Fields inherited from interface org.springframework.integration.support.management.IntegrationManagement
METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
-
Constructor Summary
Constructors Constructor Description MqttPahoMessageHandler(String url, String clientId)
Use this constructor when you don't need additionalMqttConnectOptions
.MqttPahoMessageHandler(String url, String clientId, MqttPahoClientFactory clientFactory)
Use this constructor for a single url (although it may be overridden if the server URI(s) are provided by theMqttConnectOptions.getServerURIs()
provided by theMqttPahoClientFactory
).MqttPahoMessageHandler(String clientId, MqttPahoClientFactory clientFactory)
Use this constructor if the server URI(s) are provided by theMqttConnectOptions.getServerURIs()
provided by theMqttPahoClientFactory
. -
Method Summary
Modifier and Type Method Description void
connectionLost(Throwable cause)
void
deliveryComplete(org.eclipse.paho.client.mqttv3.IMqttDeliveryToken token)
protected void
doStart()
protected void
doStop()
org.eclipse.paho.client.mqttv3.MqttConnectOptions
getConnectionInfo()
Return information about the connection.void
messageArrived(String topic, org.eclipse.paho.client.mqttv3.MqttMessage message)
protected void
onInit()
Subclasses may implement this for initialization logic.protected void
publish(String topic, Object mqttMessage, Message<?> message)
void
setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
void
setAsync(boolean async)
Set to true if you don't want to block when sending messages.void
setAsyncEvents(boolean asyncEvents)
WhensetAsync(boolean)
is true, setting this to true enables publication ofMqttMessageSentEvent
andMqttMessageDeliveredEvent
to be emitted.void
setCompletionTimeout(long completionTimeout)
Set the completion timeout for async operations.void
setDisconnectCompletionTimeout(long completionTimeout)
Set the completion timeout when disconnecting.Methods inherited from class org.springframework.integration.mqtt.outbound.AbstractMqttMessageHandler
getClientId, getClientInstance, getComponentType, getConverter, getUrl, handleMessageInternal, incrementClientInstance, isRunning, setConverter, setDefaultQos, setDefaultRetained, setDefaultTopic, setQosExpression, setQosExpressionString, setRetainedExpression, setRetainedExpressionString, setTopicExpression, setTopicExpressionString, start, stop
Methods inherited from class org.springframework.integration.handler.AbstractMessageHandler
handleMessage, onComplete, onError, onNext, onSubscribe
Methods inherited from class org.springframework.integration.handler.MessageHandlerSupport
buildSendTimer, destroy, getIntegrationPatternType, getManagedName, getManagedType, getMetricsCaptor, getOrder, getOverrides, isLoggingEnabled, registerMetricsCaptor, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrack
Methods 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, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.integration.support.management.IntegrationManagement
getThisAs
Methods inherited from interface org.springframework.integration.mqtt.core.MqttComponent
getBeanName
Methods inherited from interface org.springframework.integration.support.context.NamedComponent
getBeanName, getComponentName
-
Field Details
-
DEFAULT_COMPLETION_TIMEOUT
public static final long DEFAULT_COMPLETION_TIMEOUTThe default completion timeout in milliseconds.- See Also:
- Constant Field Values
-
DISCONNECT_COMPLETION_TIMEOUT
public static final long DISCONNECT_COMPLETION_TIMEOUTThe default disconnect completion timeout in milliseconds.- See Also:
- Constant Field Values
-
-
Constructor Details
-
MqttPahoMessageHandler
Use this constructor for a single url (although it may be overridden if the server URI(s) are provided by theMqttConnectOptions.getServerURIs()
provided by theMqttPahoClientFactory
).- Parameters:
url
- the URL.clientId
- The client id.clientFactory
- The client factory.
-
MqttPahoMessageHandler
Use this constructor if the server URI(s) are provided by theMqttConnectOptions.getServerURIs()
provided by theMqttPahoClientFactory
.- Parameters:
clientId
- The client id.clientFactory
- The client factory.- Since:
- 4.1
-
MqttPahoMessageHandler
Use this constructor when you don't need additionalMqttConnectOptions
.- Parameters:
url
- The URL.clientId
- The client id.
-
-
Method Details
-
setAsync
public void setAsync(boolean async)Set to true if you don't want to block when sending messages. Default false. When true, message sent/delivered events will be published for reception by a suitably configured 'ApplicationListener' or an event inbound-channel-adapter.- Parameters:
async
- true for async.- Since:
- 4.1
-
setAsyncEvents
public void setAsyncEvents(boolean asyncEvents)WhensetAsync(boolean)
is true, setting this to true enables publication ofMqttMessageSentEvent
andMqttMessageDeliveredEvent
to be emitted. Default false.- Parameters:
asyncEvents
- the asyncEvents.- Since:
- 4.1
-
setCompletionTimeout
public void setCompletionTimeout(long completionTimeout)Set the completion timeout for async operations. Not settable using the namespace. Default 30000L milliseconds.- Parameters:
completionTimeout
- The timeout.- Since:
- 4.1
-
setDisconnectCompletionTimeout
public void setDisconnectCompletionTimeout(long completionTimeout)Set the completion timeout when disconnecting. Not settable using the namespace. Default 5000L milliseconds.- Parameters:
completionTimeout
- The timeout.- Since:
- 5.1.10
-
setApplicationEventPublisher
- Specified by:
setApplicationEventPublisher
in interfaceApplicationEventPublisherAware
-
getConnectionInfo
public org.eclipse.paho.client.mqttv3.MqttConnectOptions getConnectionInfo()Description copied from interface:MqttComponent
Return information about the connection.- Specified by:
getConnectionInfo
in interfaceMqttComponent<org.eclipse.paho.client.mqttv3.MqttConnectOptions>
- Specified by:
getConnectionInfo
in interfaceMqttPahoComponent
- Returns:
- the information.
-
onInit
protected void onInit()Description copied from class:IntegrationObjectSupport
Subclasses may implement this for initialization logic.- Overrides:
onInit
in classAbstractMqttMessageHandler
-
doStart
protected void doStart()- Specified by:
doStart
in classAbstractMqttMessageHandler
-
doStop
protected void doStop()- Specified by:
doStop
in classAbstractMqttMessageHandler
-
publish
- Specified by:
publish
in classAbstractMqttMessageHandler
-
connectionLost
- Specified by:
connectionLost
in interfaceorg.eclipse.paho.client.mqttv3.MqttCallback
-
messageArrived
- Specified by:
messageArrived
in interfaceorg.eclipse.paho.client.mqttv3.MqttCallback
-
deliveryComplete
public void deliveryComplete(org.eclipse.paho.client.mqttv3.IMqttDeliveryToken token)- Specified by:
deliveryComplete
in interfaceorg.eclipse.paho.client.mqttv3.MqttCallback
-