public class UnicastSendingMessageHandler extends AbstractInternetProtocolSendingMessageHandler implements java.lang.Runnable
MessageHandler implementation that maps a Message into
a UDP datagram packet and sends that to the specified host and port.
Messages can be basic, with no support for reliability, can be prefixed
by a length so the receiving end can detect truncation, and can require
a UDP acknowledgment to confirm delivery.IntegrationManagement.ManagementOverridesEXPRESSION_PARSER, loggerMETER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME| Constructor and Description |
|---|
UnicastSendingMessageHandler(org.springframework.expression.Expression destinationExpression)
Construct UnicastSendingMessageHandler based on the destination SpEL expression to
determine the target destination at runtime against requestMessage.
|
UnicastSendingMessageHandler(java.lang.String destinationExpression)
Construct UnicastSendingMessageHandler based on the destination SpEL expression to
determine the target destination at runtime against requestMessage.
|
UnicastSendingMessageHandler(java.lang.String host,
int port)
Basic constructor; no reliability; no acknowledgment.
|
UnicastSendingMessageHandler(java.lang.String host,
int port,
boolean lengthCheck)
Can used to add a length to each packet which can be checked at the destination.
|
UnicastSendingMessageHandler(java.lang.String host,
int port,
boolean lengthCheck,
boolean acknowledge,
java.lang.String ackHost,
int ackPort,
int ackTimeout)
Add a length and/or acknowledgment request to packets.
|
UnicastSendingMessageHandler(java.lang.String host,
int port,
boolean acknowledge,
java.lang.String ackHost,
int ackPort,
int ackTimeout)
Add an acknowledgment request to packets.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
convertAndSend(org.springframework.messaging.Message<?> message) |
void |
doStart() |
protected void |
doStop() |
int |
getAckPort() |
java.lang.String |
getComponentType()
Subclasses may implement this method to provide component type information.
|
protected java.net.DatagramSocket |
getSocket() |
int |
getSoReceiveBufferSize() |
protected java.net.DatagramSocket |
getTheSocket() |
void |
handleMessageInternal(org.springframework.messaging.Message<?> message) |
boolean |
isAcknowledge() |
protected void |
onInit()
Subclasses may implement this for initialization logic.
|
void |
restartAckThread()
If exposed as an MBean, can be used to restart the ack thread if a fatal
(bind) error occurred, without bouncing the JVM.
|
void |
run()
Process acknowledgments, if requested.
|
void |
setAckCounter(int ackCounter) |
void |
setLengthCheck(boolean lengthCheck) |
void |
setLocalAddress(java.lang.String localAddress)
On a multi-homed system, specifies the ip address of the network interface used to communicate.
|
protected void |
setReliabilityAttributes(boolean lengthCheck,
boolean acknowledge,
java.lang.String ackHost,
int ackPort,
int ackTimeout) |
protected void |
setSocket(java.net.DatagramSocket socket) |
protected void |
setSocketAttributes(java.net.DatagramSocket socket) |
void |
setSocketExpression(org.springframework.expression.Expression socketExpression) |
void |
setSocketExpressionString(java.lang.String socketExpression) |
void |
setSoReceiveBufferSize(int size) |
void |
setTaskExecutor(java.util.concurrent.Executor taskExecutor) |
void |
startAckThread() |
protected void |
updateAckAddress() |
getDestinationAddress, getHost, getPort, getSoSendBufferSize, getSoTimeout, isRunning, setSoSendBufferSize, setSoTimeout, start, stopconfigureMetrics, destroy, getActiveCount, getActiveCountLong, getDuration, getErrorCount, getErrorCountLong, getHandleCount, getHandleCountLong, getManagedName, getManagedType, getMaxDuration, getMeanDuration, getMinDuration, getOrder, getOverrides, getStandardDeviationDuration, handleMessage, isCountsEnabled, isLoggingEnabled, isStatsEnabled, onComplete, onError, onNext, onSubscribe, registerMetricsCaptor, reset, setCountsEnabled, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, setStatsEnabledafterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanFactory, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetComponentNamepublic UnicastSendingMessageHandler(java.lang.String host,
int port)
host - Destination host.port - Destination port.public UnicastSendingMessageHandler(java.lang.String destinationExpression)
destinationExpression - the SpEL expression to evaluate the target destination
at runtime. Must evaluate to String, URI or SocketAddress.public UnicastSendingMessageHandler(org.springframework.expression.Expression destinationExpression)
destinationExpression - the SpEL expression to evaluate the target destination
at runtime. Must evaluate to String, URI or SocketAddress.public UnicastSendingMessageHandler(java.lang.String host,
int port,
boolean lengthCheck)
host - Destination Host.port - Destination Port.lengthCheck - If true, packets will contain a length.public UnicastSendingMessageHandler(java.lang.String host,
int port,
boolean acknowledge,
java.lang.String ackHost,
int ackPort,
int ackTimeout)
host - Destination Host.port - Destination Port.acknowledge - If true, packets will request acknowledgment.ackHost - The host to which acks should be sent. Required if ack true.ackPort - The port to which acks should be sent.ackTimeout - How long we will wait (milliseconds) for the ack.public UnicastSendingMessageHandler(java.lang.String host,
int port,
boolean lengthCheck,
boolean acknowledge,
java.lang.String ackHost,
int ackPort,
int ackTimeout)
host - Destination Host.port - Destination Port.lengthCheck - If true, packets will contain a length.acknowledge - If true, packets will request acknowledgment.ackHost - The host to which acks should be sent. Required if ack true.ackPort - The port to which acks should be sent.ackTimeout - How long we will wait (milliseconds) for the ack.protected final void setReliabilityAttributes(boolean lengthCheck,
boolean acknowledge,
java.lang.String ackHost,
int ackPort,
int ackTimeout)
public void setLengthCheck(boolean lengthCheck)
lengthCheck - if true, a four byte binary length header is added to the
packet, allowing the receiver to check for data truncation.public void doStart()
doStart in class AbstractInternetProtocolSendingMessageHandlerprotected void doStop()
doStop in class AbstractInternetProtocolSendingMessageHandlerpublic void handleMessageInternal(org.springframework.messaging.Message<?> message)
throws org.springframework.messaging.MessageHandlingException,
org.springframework.messaging.MessageDeliveryException
handleMessageInternal in class AbstractMessageHandlerorg.springframework.messaging.MessageHandlingExceptionorg.springframework.messaging.MessageDeliveryExceptionpublic void startAckThread()
protected void convertAndSend(org.springframework.messaging.Message<?> message)
throws java.lang.Exception
java.lang.Exceptionprotected void setSocket(java.net.DatagramSocket socket)
@Nullable protected java.net.DatagramSocket getTheSocket()
protected java.net.DatagramSocket getSocket()
throws java.io.IOException
java.io.IOExceptionprotected void updateAckAddress()
public void setSoReceiveBufferSize(int size)
setSoReceiveBufferSize in interface CommonSocketOptionssetSoReceiveBufferSize in class AbstractInternetProtocolSendingMessageHandlersize - The receive buffer size.Socket.setReceiveBufferSize(int),
DatagramSocket.setReceiveBufferSize(int)public void setLocalAddress(java.lang.String localAddress)
CommonSocketOptionssetLocalAddress in interface CommonSocketOptionslocalAddress - The local address.public void setTaskExecutor(java.util.concurrent.Executor taskExecutor)
public void setAckCounter(int ackCounter)
ackCounter - the ackCounter to setpublic void setSocketExpression(org.springframework.expression.Expression socketExpression)
socketExpression - the socket expression to determine the target socket at runtime.public void setSocketExpressionString(java.lang.String socketExpression)
socketExpression - the socket SpEL expression to determine the target socket at runtime.public java.lang.String getComponentType()
IntegrationObjectSupportgetComponentType in interface NamedComponentgetComponentType in class AbstractMessageHandlerpublic boolean isAcknowledge()
public int getAckPort()
public int getSoReceiveBufferSize()
protected void onInit()
IntegrationObjectSupportonInit in class AbstractMessageHandlerprotected void setSocketAttributes(java.net.DatagramSocket socket)
throws java.net.SocketException
java.net.SocketExceptionpublic void run()
run in interface java.lang.Runnablepublic void restartAckThread()