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.EXPRESSION_PARSER, logger| 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() |
protected java.net.DatagramSocket |
getSocket() |
int |
getSoReceiveBufferSize() |
protected java.net.DatagramSocket |
getTheSocket() |
void |
handleMessageInternal(org.springframework.messaging.Message<?> message) |
boolean |
isAcknowledge() |
protected void |
onInit() |
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, 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, 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, waitpublic 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 org.springframework.integration.handler.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)
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()
getComponentType in interface org.springframework.integration.support.context.NamedComponentgetComponentType in class org.springframework.integration.handler.AbstractMessageHandlerpublic boolean isAcknowledge()
public int getAckPort()
public int getSoReceiveBufferSize()
protected void onInit()
throws java.lang.Exception
onInit in class org.springframework.integration.handler.AbstractMessageHandlerjava.lang.Exceptionprotected void setSocketAttributes(java.net.DatagramSocket socket)
throws java.net.SocketException
java.net.SocketExceptionpublic void run()
run in interface java.lang.Runnablepublic void restartAckThread()