|
|||||||||
| 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 TaskSchedulerAwarepublic void afterPropertiesSet()
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBeanpublic boolean isRunning()
public void start()
public void stop()
protected final void handleMessageInternal(Message<?> message)
handleMessageInternal in class AbstractMessageHandlerprotected 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 | ||||||||