|
||||||||||
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.RoutingSlip
public class RoutingSlip
Implements a Routing Slip pattern where the list of actual endpoints to send a message exchange to are dependent on the value of a message header.
This implementation mirrors the logic from thePipeline
in the async variation
as the failover load balancer is a specialized pipeline. So the trick is to keep doing the same as the
pipeline to ensure it works the same and the async routing engine is flawless.
Nested Class Summary | |
---|---|
protected static interface |
RoutingSlip.RoutingSlipIterator
The iterator to be used for retrieving the next routing slip(s) to be used. |
Field Summary | |
---|---|
protected CamelContext |
camelContext
|
protected Expression |
expression
|
protected String |
header
|
protected boolean |
ignoreInvalidEndpoints
|
protected org.slf4j.Logger |
log
|
protected ProducerCache |
producerCache
|
protected String |
uriDelimiter
|
Constructor Summary | |
---|---|
RoutingSlip(CamelContext camelContext)
|
|
RoutingSlip(CamelContext camelContext,
Expression expression,
String uriDelimiter)
|
Method Summary | |
---|---|
protected RoutingSlip.RoutingSlipIterator |
createRoutingSlipIterator(Exchange exchange)
Creates the route slip iterator to be used. |
boolean |
doRoutingSlip(Exchange exchange,
Object routingSlip,
AsyncCallback callback)
|
protected void |
doShutdown()
Implementations override this method to perform customized shutdown |
protected void |
doStart()
|
protected void |
doStop()
|
String |
getTraceLabel()
Gets the trace label used for logging when tracing is enabled. |
boolean |
isIgnoreInvalidEndpoints()
|
protected Exchange |
prepareExchangeForRoutingSlip(Exchange current,
Endpoint endpoint)
|
void |
process(Exchange exchange)
Processes the message exchange |
boolean |
process(Exchange exchange,
AsyncCallback callback)
Processes the message exchange. |
protected boolean |
processExchange(Endpoint endpoint,
Exchange exchange,
Exchange original,
AsyncCallback callback,
RoutingSlip.RoutingSlipIterator iter)
|
protected Endpoint |
resolveEndpoint(RoutingSlip.RoutingSlipIterator iter,
Exchange exchange)
|
void |
setDelimiter(String delimiter)
|
void |
setIgnoreInvalidEndpoints(boolean ignoreInvalidEndpoints)
|
String |
toString()
|
Methods inherited from class org.apache.camel.impl.ServiceSupport |
---|
addChildService, doResume, 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 |
Field Detail |
---|
protected final transient org.slf4j.Logger log
protected ProducerCache producerCache
protected boolean ignoreInvalidEndpoints
protected String header
protected Expression expression
protected String uriDelimiter
protected final CamelContext camelContext
Constructor Detail |
---|
public RoutingSlip(CamelContext camelContext)
public RoutingSlip(CamelContext camelContext, Expression expression, String uriDelimiter)
Method Detail |
---|
public void setDelimiter(String delimiter)
public boolean isIgnoreInvalidEndpoints()
public void setIgnoreInvalidEndpoints(boolean ignoreInvalidEndpoints)
public String toString()
toString
in class Object
public String getTraceLabel()
Traceable
getTraceLabel
in interface Traceable
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 process(Exchange exchange, AsyncCallback callback)
AsyncProcessor
Processor.process(org.apache.camel.Exchange)
, but the caller supports having the exchange asynchronously processed.
If there was a failure processing then the caused Exception
would be set on the Exchange
.
process
in interface AsyncProcessor
exchange
- the message exchangecallback
- the AsyncCallback
will be invoked when the processing of the exchange is completed.
If the exchange is completed synchronously, then the callback is also invoked synchronously.
The callback should therefore be careful of starting recursive loop.
AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback)
public boolean doRoutingSlip(Exchange exchange, Object routingSlip, AsyncCallback callback)
protected RoutingSlip.RoutingSlipIterator createRoutingSlipIterator(Exchange exchange)
exchange
- the exchange
protected Endpoint resolveEndpoint(RoutingSlip.RoutingSlipIterator iter, Exchange exchange) throws Exception
Exception
protected Exchange prepareExchangeForRoutingSlip(Exchange current, Endpoint endpoint)
protected boolean processExchange(Endpoint endpoint, Exchange exchange, Exchange original, AsyncCallback callback, RoutingSlip.RoutingSlipIterator iter)
protected void doStart() throws Exception
doStart
in class ServiceSupport
Exception
protected void doStop() throws Exception
doStop
in class ServiceSupport
Exception
protected void doShutdown() throws Exception
ServiceSupport
doShutdown
in class ServiceSupport
Exception
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |