|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.camel.impl.ServiceSupport org.apache.camel.processor.StreamResequencer
public class StreamResequencer
A resequencer that re-orders a (continuous) stream of Exchange
s. The
algorithm implemented by ResequencerEngine
is based on the detection
of gaps in a message stream rather than on a fixed batch size. Gap detection
in combination with timeouts removes the constraint of having to know the
number of messages of a sequence (i.e. the batch size) in advance.
Messages must contain a unique sequence number for which a predecessor and a successor is known. For example a message with the sequence number 3 has a predecessor message with the sequence number 2 and a successor message with the sequence number 4. The message sequence 2,3,5 has a gap because the successor of 3 is missing. The resequencer therefore has to retain message 5 until message 4 arrives (or a timeout occurs).
Instances of this class poll for Exchange
s from a given
endpoint
. Resequencing work and the delivery of messages to
the next processor
is done within the single polling thread.
ResequencerEngine
Constructor Summary | |
---|---|
StreamResequencer(CamelContext camelContext,
Processor processor,
SequenceElementComparator<Exchange> comparator)
Creates a new StreamResequencer instance. |
Method Summary | |
---|---|
protected void |
doStart()
|
protected void |
doStop()
|
int |
getCapacity()
Returns this resequencer's capacity. |
ExceptionHandler |
getExceptionHandler()
Returns this resequencer's exception handler. |
Processor |
getProcessor()
Returns the next processor. |
long |
getTimeout()
Returns this resequencer's timeout. |
String |
getTraceLabel()
Gets the trace label used for logging when tracing is enabled. |
boolean |
hasNext()
Are there more outputs? |
List<Processor> |
next()
Next group of outputs |
void |
process(Exchange exchange)
Processes the message exchange |
void |
sendElement(Exchange exchange)
Sends the exchange to the next processor . |
void |
setCapacity(int capacity)
|
void |
setTimeout(long timeout)
|
String |
toString()
|
Methods inherited from class org.apache.camel.impl.ServiceSupport |
---|
addChildService, doResume, doShutdown, doSuspend, getStatus, getVersion, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isSuspended, isSuspending, removeChildService, resume, shutdown, start, start, stop, suspend |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public StreamResequencer(CamelContext camelContext, Processor processor, SequenceElementComparator<Exchange> comparator)
StreamResequencer
instance.
processor
- next processor that processes re-ordered exchanges.comparator
- a sequence element comparator for exchanges.Method Detail |
---|
public ExceptionHandler getExceptionHandler()
public Processor getProcessor()
public int getCapacity()
timeout
milliseconds giving exchanges the
possibility to time out and to be delivered after the waiting period.
public long getTimeout()
ResequencerEngine.setTimeout(long)
. This value is
also used to define the polling timeout from the endpoint.
ResequencerEngine.setTimeout(long)
public void setCapacity(int capacity)
public void setTimeout(long timeout)
public String toString()
toString
in class Object
public String getTraceLabel()
Traceable
getTraceLabel
in interface Traceable
protected void doStart() throws Exception
doStart
in class ServiceSupport
Exception
protected void doStop() throws Exception
doStop
in class ServiceSupport
Exception
public void sendElement(Exchange exchange) throws Exception
exchange
to the next processor
.
sendElement
in interface SequenceSender<Exchange>
exchange
- exchange to send.
Exception
- if delivery fails.public void process(Exchange exchange) throws Exception
Processor
process
in interface Processor
exchange
- the message exchange
Exception
- if an internal processing error has occurred.public boolean hasNext()
Navigate
hasNext
in interface Navigate<Processor>
public List<Processor> next()
Navigate
next
in interface Navigate<Processor>
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |