|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.springframework.integration.handler.AbstractMessageHandler
org.springframework.integration.aggregator.AbstractMessageBarrierHandler
public abstract class AbstractMessageBarrierHandler
Base class for MessageBarrier
-based Message Handlers. A
MessageHandler
implementation that waits for a group of
Messages
to arrive and processes them together. Uses a
MessageBarrier
to store messages and to decide how the messages
should be released.
Each Message
that is received by this handler will be associated
with a group based upon the 'correlationId
' property of its
header. If no such property is available, a MessageHandlingException
will be thrown.
The 'timeout
' value determines how long to wait for the complete
group after the arrival of the first Message
of the group. The
default value is 1 minute. If the timeout elapses prior to completion, then
Messages with that timed-out 'correlationId' will be sent to the
'discardChannel' if provided unless 'sendPartialResultsOnTimeout' is set to
true in which case the incomplete group will be sent to the output channel.
Field Summary | |
---|---|
protected java.util.concurrent.ConcurrentMap<java.lang.Object,MessageBarrier> |
barriers
|
static long |
DEFAULT_REAPER_INTERVAL
|
static long |
DEFAULT_SEND_TIMEOUT
|
static long |
DEFAULT_TIMEOUT
|
static int |
DEFAULT_TRACKED_CORRRELATION_ID_CAPACITY
|
protected org.apache.commons.logging.Log |
logger
|
protected java.util.concurrent.BlockingQueue<java.lang.Object> |
trackedCorrelationIds
|
Constructor Summary | |
---|---|
AbstractMessageBarrierHandler()
|
Method Summary | |
---|---|
void |
afterPropertiesSet()
|
protected abstract MessageBarrier |
createMessageBarrier()
Factory method for creating a suitable MessageBarrier implementation. |
protected void |
handleMessageInternal(Message<?> message)
|
protected abstract boolean |
isBarrierRemovable(java.lang.Object correlationId,
java.util.List<Message<?>> releasedMessages)
Implements the logic for deciding whether, based on what the MessageBarrier has released so far, work for the correlationId can be considered complete and the barrier can be released. |
boolean |
isRunning()
|
protected abstract Message<?>[] |
processReleasedMessages(java.lang.Object correlationId,
java.util.List<Message<?>> messages)
Implements the logic for transforming the released Messages. |
protected MessageChannel |
resolveReplyChannelFromMessage(Message<?> message)
|
void |
setDiscardChannel(MessageChannel discardChannel)
Specify a channel for sending Messages that arrive after their aggregation group has either completed or timed-out. |
void |
setOutputChannel(MessageChannel outputChannel)
|
void |
setReaperInterval(long reaperInterval)
Set the interval in milliseconds for the reaper thread. |
void |
setSendPartialResultOnTimeout(boolean sendPartialResultOnTimeout)
Specify whether to aggregate and send the resulting Message when the timeout elapses prior to the CompletionStrategy returning true. |
void |
setSendTimeout(long sendTimeout)
|
void |
setTaskScheduler(TaskScheduler taskScheduler)
|
void |
setTimeout(long timeout)
Maximum time to wait (in milliseconds) for the completion strategy to become true. |
void |
setTrackedCorrelationIdCapacity(int trackedCorrelationIdCapacity)
Set the number of completed correlationIds to track. |
void |
start()
|
void |
stop()
|
Methods inherited from class org.springframework.integration.handler.AbstractMessageHandler |
---|
handleMessage |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final long DEFAULT_SEND_TIMEOUT
public static final long DEFAULT_TIMEOUT
public static final long DEFAULT_REAPER_INTERVAL
public static final int DEFAULT_TRACKED_CORRRELATION_ID_CAPACITY
protected final org.apache.commons.logging.Log logger
protected final java.util.concurrent.ConcurrentMap<java.lang.Object,MessageBarrier> barriers
protected volatile java.util.concurrent.BlockingQueue<java.lang.Object> trackedCorrelationIds
Constructor Detail |
---|
public AbstractMessageBarrierHandler()
Method Detail |
---|
public void setOutputChannel(MessageChannel outputChannel)
public void setDiscardChannel(MessageChannel discardChannel)
public void setSendPartialResultOnTimeout(boolean sendPartialResultOnTimeout)
public void setReaperInterval(long reaperInterval)
public void setTrackedCorrelationIdCapacity(int trackedCorrelationIdCapacity)
public void setTimeout(long timeout)
public void setSendTimeout(long sendTimeout)
public void setTaskScheduler(TaskScheduler taskScheduler)
setTaskScheduler
in interface TaskSchedulerAware
public void afterPropertiesSet()
afterPropertiesSet
in interface org.springframework.beans.factory.InitializingBean
public boolean isRunning()
public void start()
public void stop()
protected final void handleMessageInternal(Message<?> message)
handleMessageInternal
in class AbstractMessageHandler
protected MessageChannel resolveReplyChannelFromMessage(Message<?> message)
protected abstract MessageBarrier createMessageBarrier()
protected abstract boolean isBarrierRemovable(java.lang.Object correlationId, java.util.List<Message<?>> releasedMessages)
protected abstract Message<?>[] processReleasedMessages(java.lang.Object correlationId, java.util.List<Message<?>> messages)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |