public class ExpressionEvaluatingRoutingSlipRouteStrategy extends java.lang.Object implements RoutingSlipRouteStrategy, IntegrationEvaluationContextAware
Expression
based RoutingSlipRouteStrategy
implementation.
The requestMessage
and reply
object are wrapped
to the ExpressionEvaluatingRoutingSlipRouteStrategy.RequestAndReply
which is used as a EvaluationContext
rootObject
.
This is necessary to avoid a creation of a new EvaluationContext
on each invocation
when additional parameter can be populated as expression variable, but EvaluationContext
isn't thread-safe.
The ExpressionEvaluatingRoutingSlipRouteStrategy
can be used directly as a regular bean
in the ApplicationContext
and its beanName
can be used from routingSlip
header configuration.
Usage of ExpressionEvaluatingRoutingSlipRouteStrategy
as a regular bean definition is
a recommended way in case of distributed environment, when message with routingSlip
header can be sent across the network. One of this case is a QueueChannel
with
persistent MessageStore
, when ExpressionEvaluatingRoutingSlipRouteStrategy
instance as a header value will be non-serializable.
This class is used internally from RoutingSlipHeaderValueMessageProcessor
to populate routingSlip
header value item, when the value
from configuration contains expression definitions:
<header-enricher>
<routing-slip
value="channel1; @routingSlipPojo.get(request, reply); request.headers[foo]"/>
</header-enricher>
Modifier and Type | Class and Description |
---|---|
static class |
ExpressionEvaluatingRoutingSlipRouteStrategy.RequestAndReply |
Constructor and Description |
---|
ExpressionEvaluatingRoutingSlipRouteStrategy(Expression expression) |
ExpressionEvaluatingRoutingSlipRouteStrategy(java.lang.String expression) |
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
getNextPath(Message<?> requestMessage,
java.lang.Object reply) |
void |
setIntegrationEvaluationContext(EvaluationContext evaluationContext) |
java.lang.String |
toString() |
public ExpressionEvaluatingRoutingSlipRouteStrategy(java.lang.String expression)
public ExpressionEvaluatingRoutingSlipRouteStrategy(Expression expression)
public void setIntegrationEvaluationContext(EvaluationContext evaluationContext)
setIntegrationEvaluationContext
in interface IntegrationEvaluationContextAware
public java.lang.Object getNextPath(Message<?> requestMessage, java.lang.Object reply)
getNextPath
in interface RoutingSlipRouteStrategy
public java.lang.String toString()
toString
in class java.lang.Object