Enables annotation support for Message Endpoints.
Default output channel for the @Publisher annotation support.
Defines the ApplicationEventMulticaster to use for this
ApplicationContext.
The "task-executor"
reference is optional. If not provided, an
instance of
ThreadPoolTaskExecutor will be created by default.
Defines a Point-to-Point MessageChannel.
Identifies this channel as a Queue style
channel
Identifies this channel as a Queue style
channel where messages could be prioritized
based on custom logic
Provides MessageDispatcher configuration
(i.e., failover, load-balancing, task-executor)
Defines a queue for messages. If 'capacity' is specified, it will be a
bounded queue.
A custom Queue
implementation can be injected using the 'ref'
attribute.
Capacity for this queue. Default capacity is 0 which means
this queue will accumulate as many
messages as available resources allow.
Reference to a MessageGroupStore that can be used to buffer the messages. If a message store is
specified then it will store messages for this channel with a correlation key equal to the
channel name. If you need
more control over the correlation key (e.g. two channels in the same
application share a name), then you need to
look to the queue implementation itself and provide an
explicit instance via the "ref" attribute, or else maybe the
message store has a way to specify a region or similar additional
tag for messages. This attribute is
mutually
exclusive with the "ref" attribute (only one can be specified).
Reference to a BlockingQueue that can be used to buffer the messages. This attribute is
mutually
exclusive with the "message-store" attribute (only one can be specified).
Defines a queue with priority-ordering for message reception.
Capacity for this queue. Default capacity is 0 which means
this queue will accumulate as many
messages as available resources allow.
Defines a rendezvous queue where a sender will block until the receiver
arrives or vice-versa.
Defines the dispatching configuration for a non-buffering channel
(i.e. one without a queue).
Defines a load-balancing strategy for the channel's dispatcher.
The default is a round-robin load
balancer.
[DEFAULT] Defines a Round Robin dispatching strategy which allows
load balancing of messages
between multiple Message Handlers. Which
message
handler receives the message first is determined by the 'order'
attribute
of such Message Handler.
No LoadBalancingStrategy will be used.
Specifies whether this dispatcher has failover enabled. By default,
failover will be enabled. Set
this to 'false' to disable it.
When enabled and message delivery to the primary Message Handler fails,
an attempt
will be made to deliver the message to the next handler
and so on...
Primary, secondary etc... is determined by the
load-balancing strategy in
use
(e.g. round-robin). If no load-balancer strategy is configured, the
order will
be fixed
in a sequence determined by the 'order' attribute on the
Message Handlers
(or the @Ordered annotation on adapted
methods).
Defines a Publish-Subscribe channel that broadcasts messages to its
subscribers.
Specify whether Exceptions thrown by any subscribed handler should be
ignored (only logged).
Specify whether the sequence size, sequence number, and correlation id
headers should be set on
Messages that are sent through this channel.
Defines a message channel.
This attribute is DEPRECATED. Please use the dispatcher sub-element
instead.
Enables failover, but disables load-balancing.
See the dispatcher sub-element for more
information.
Defines a Messaging Gateway.
Defines a Messaging Gateway to be used within a chain.
Defines a Channel Adapter that receives from a MessageSource and sends to a
MessageChannel.
Maximum amount of time in milliseconds to wait when sending a message to the channel if such channel may block.
For example, a Queue Channel can block until space is available if its maximum capacity has been reached.
Defines a Channel Adapter that receives Resource(s) and sends them to a
MessageChannel identified via 'channel' attribute.
Component identifier
Channel where Message will be sent to
Reference to the implementation of org.springframework.integration.util.CollectionFilter.
Lifecycle attribute signaling if this component should be started during Application Context startup.
Location pattern expression (e.g., "/**/*.txt")
Reference to a org.springframework.core.io.support.ResourcePatternResolver.
Maximum amount of time in milliseconds to wait when sending a message to the channel if such channel may block.
For example, a Queue Channel can block until space is available if its maximum capacity has been reached.
Defines a Channel Adapter that receives from a MessageChannel and passes to
a method-invoking
MessageHandler.
Specifies the order for invocation when this endpoint is connected as a
subscriber to a channel. This is particularly relevant when that channel
is using a "failover" dispatching strategy. It has no effect when this
endpoint itself is a Polling Consumer for a channel with a queue.
Provide a name for the logger. This is useful when there are multiple logging Channel Adapters configured,
and you would like to differentiate them within the actual log. By default the logger name will be the
fully qualified class name of the LoggingHandler implementation.
A reference to a bean defined in the application context.
A method defined on the bean referenced by 'ref' attribute
SpEL expression to be evaluated for each triggered execution.
The result of the evaluation will be
passed as the payload of
the Message that is sent to the MessageChannel.
Identifies channel attached to this adapter. Depending on the type of the adapter
this channel could be the receiving channel (e.g., outbound-channel-adapter) or channel where
messages will be sent to by this adapter (e.g., inbound-channel-adapter).
Lifecycle attribute signaling if this component should be started during Application Context startup.
Defines an endpoint for exposing any bean reference as a service that
receives request Messages
from an 'input-channel' and may send reply
Messages to an 'output-channel'. The 'ref' may point to an instance
that
has either a single public method or a method with the
@ServiceActivator annotation. Otherwise, the 'method'
attribute
should be provided along with 'ref'.
Specify whether the service method must return a non-null value. This value will be
FALSE by
default, but if set to TRUE, a MessageHandlingException will be thrown when
the underlying service method (or
expression) returns a NULL value.
Base type for Message-handling endpoints.
A reference to a bean that implements the handler.
The bean can be an implementation of the MessageHandler interface or a POJO
A method defined on the bean referenced by 'ref' attribute
Base type for Message Handlers.
A reference to a bean that implements the handler.
The bean can be an implementation of the MessageHandler interface or a POJO
A method defined on the bean referenced by 'ref' attribute
Defines an endpoint that passes a Message to its request-channel
and then expects a reply Message. The reply Message then becomes
the root object for evaluation of expressions to enrich the
target payload.
Each property sub-element provides the name of a property (via the required 'name' attribute).
That property should be settable on the target payload instance. Exactly one of the 'value'
or 'expression' attributes must be provided as well. The former for a literal value to set,
and the latter for a SpEL expression to be evaluated. The root object of the evaluation
context is the Message that was returned from the flow initiated by this enricher.
Channel to which a Message will be sent to get the data to use
for enrichment. This attribute is optional. Not specifying a
'request-channel' is useful in situations, where only static
values shall be used for enrichment using the 'property'
sub-element.
Channel where a reply Message is expected. This is optional; typically the auto-generated
temporary reply channel is sufficient.
Boolean value indicating whether any payload that implements Cloneable should be cloned
prior to sending the Message to the request chanenl for acquiring the enriching data.
The cloned version would be used as the target payload for the ultimate reply.
If the payload does NOT implement 'Cloneable', then setting this
attribute to 'true' has NO effect.
Default is false.
Defines an endpoint that passes a Message to the output-channel after a
delay. The delay may
be
retrieved from a Message header or else fallback to the
'default-delay' of this endpoint.
Specify the default delay in milliseconds. This value can be set to 0
if the only Messages
that
should be delayed are those with a particular header (in that
case, be sure to provide
a value for the
'delay-header-name' attribute).
Specify the name of the header that should contain the delay value.
This value can either
represent the number of milliseconds to delay counting from the current
time or it can be an
absolute Date until
which the Message should be delayed.
Provide a reference to the TaskScheduler instance to which
this endpoint should
delegate when scheduling the sending of delayed Messages. If not
provided, the default
will use a thread pool of
size
1.
Provide a reference to the MessageStore instance that should be used
to store Messages while
awaiting the delay.
Specify whether tasks should be able to complete on shutdown. By
default this is 'false'.
Defines an endpoint that passes a Message to the
output-channel without
modifying it.
Defines an endpoint composed of a chain of Message
Handlers.
Defines a top-level poller.
Defines the configuration metadata for a poller.
Fixed delay trigger (in milliseconds).
Allows this poller to reference another instance of a top-level poller.
[IMPORTANT] - This attribute is only allowed on inner poller definitions.
Defining this attribute on a top-level poller definition will result in a configuration exception.
Fixed rate trigger (in milliseconds).
Cron trigger.
Defines a MessageSelector chain.
Provides a MessageSelector reference. If a method attribute is set the
referred bean doesn't need
to implement the MessageSelector
interface.
Defines a HeaderEnricher endpoint for values defined in the MessageHeader.
Shortcut to specify value for 'replyChannel' header.
Can be a 'ref' to the MessageChannel, a 'value' as name of the MessageChannel,
or some valid SpEL 'expression' which returns the MessageChannel reference or name of the MessageChannel.
Shortcut to specify value for 'errorChannel' header.
Can be a 'ref' to the MessageChannel, a 'value' as name of the MessageChannel,
or some valid SpEL 'expression' which returns the MessageChannel reference or name of the MessageChannel.
Shortcut to specify value for 'correlationId' header
Shortcut to specify value for 'expirationDate' header (java.lang.Long)
Shortcut to specify value for 'priority' header when using PriorityChannel
Integer value identifying the value of the 'priority' header.
Boolean value to indicate whether this header value should overwrite
an existing header
value
for the same name.
Element that accepts any user-defined header name/value pair.
Allows you to configure Message Poller if this endpoint is a Polling Consumer
Specify the default boolean value for whether to overwrite existing
header values. This will
only
take effect for
sub-elements that do not provide their own 'overwrite' attribute. If the
'default-overwrite'
attribute is not
provided, then the specified header values will NOT overwrite any
existing ones with the same
header
names.
Specify whether null values, such as might be returned from an expression evaluation,
should be
skipped. The default value is true. Set this to false if a null value should
trigger removal of the corresponding
header instead.
Reference to an Object to be invoked for header values.
The 'method' attribute is required
along
with this.
Method to be invoked on the referenced Object as specified by the
'ref' attribute. The method
should return a Map with String-typed keys.
Defines a Message Header with a literal value or object reference.
Name of the header to be added.
Provides a header value for the given header name. Requires
exactly one of the 'ref', 'value', or
'expression' attributes.
The 'type' attribute allows for the specification of the expected
type when using a 'value'
or 'expression', but it is optional.
Also for a header value one of 'bean', 'script' or
'expression' sub-elements can be defined, but they are mutually exclusive
with the attributes defined above.
Literal value to be associated with the given header name.
Expression to be evaluated at runtime to determine the header value.
The EvaluationContext will
include variables for 'payload' and
'headers'.
Reference to be associated with the given header name.
Name of a method to be invoked on the referenced target object.
Boolean value to indicate whether this header value should overwrite an
existing header value for
the same name.
Defines a HeaderFilter endpoint to remove values defined in the MessageHeaders.
Specify one or more header names (as a comma separated list) to
be removed from the
MessageHeaders
of the Message being handled.
Boolean flag that specifies whether values provided in 'header-names' should be treated as
match patterns or literal values. For example header-names='foo*' would mean remove all
headers that begin with 'foo' including the header named 'foo*'. However if you want to
treat '*' as literal value setting this flag to FALSE will not perform pattern match and
the only header that will be removed is the one that is an exact match.
Defines a Transformer.
Defines a Transformer that converts any Object payload to a String by
invoking its toString()
method.
Defines a Transformer that converts any Object payload to a SpEL Map.
Defines a Transformer that converts SpEL-based Map to an object.
The name of the bean to be produced by this transformer. The bean MUST BE of scope 'prototype'.
NOTE: This attribute is mutually-exclusive with 'type'.
Defines a Transformer that converts any Object payload to a JSON String.
Reference to a Jackson ObjectMapper instance to be provided optionally
if the default ObjectMapper
configuration is not desirable.
Defines a Transformer that converts a JSON String to an object.
Reference to a Jackson ObjectMapper instance to be provided optionally
if the default ObjectMapper
configuration is not desirable.
Defines a Transformer that converts an object payload to a byte array.
Reference to a Serializer instance to convert from an object to a byte array.
This is optional.
The default will use standard Java serialization.
Defines a Transformer that converts a byte array to an object.
Reference to a Deserializer instance to convert from a byte array to an object.
This is optional.
The default will use standard Java deserialization.
Defines a Transformer that stores a Message and returns a new
Message, whose payload is the id of the stored Message.
Defines a Transformer that accepts a Message whose payload is a
UUID and retrieves the Message associated with that id from a
MessageStore if available (else null).
If set to 'true' the Message will be removed
from the MessageStore by this transformer.
Useful when Message can be 'claimed' only
once. DEFAULT is 'false'.
Reference to the MessageStore to be used by this Claim Check
transformer. If not specified, the default reference will be
to a bean named 'messageStore'.
Defines a Message Filters that is used to decide whether a Message should be passed
along or dropped based on some criteria
The channel where the filter will send the messages that were dropped
The "ref" attribute references the bean name of a custom
Router implementation. Typically that implementation will
be a simple POJO, but it may extend AbstractMessageRouter.
Provide the "method" attribute as well to clarify which
method should be invoked, Alternatively, the "ref" attribute
may point to an instance that contains the @Router annotation
on one of its methods.
Instead of using the "ref" attribute you may also provide
the custom Router implementation as an inner bean
definition.
However, keep in mind that using both the "ref" attribute
and an inner handler definition in the same Router
configuration is not allowed, as it creates an
ambiguous condition, and an Exception will be thrown.
Additionally, instead of using "ref" and "method" at all,
you can use the "expression" attribute (see description below).
When implementing a custom Router using a plain POJO
the "ref" attribute may be combined with an explicit
method name using the "method" attribute.
The referenced method may return either a MessageChannel
or a String type. Additionally, the method may return
either a single value or a collection. If a collection
is returned, the reply message will be sent to
multiple channels.
Specifying a "method" attribute applies the same behavior
as when using the @Router annotation on a single method
within the object pointed to by the "ref".
SpEL Expression to be evaluated at runtime. Allows you
to implement simple computations without implementing
a custom POJO router. Generally, the SpEL expression is
evaluated and the result is mapped to a channel using
"mapping" sub-elements.
However, if no "mapping" sub-element is present, the
SpEL Expression will evaluate to a channel name directly.
A SpEL expression may also return a Collection. Whenever
the expression returns multiple channel values the
Message will be forwarded to each channel.
Note that SpEL supports bean-references within expressions
using the @ sign. This enables more sophisticated mapping
of Message content to method arguments, e.g.:
expression="@someBean.someMethod(payload.foo, headers.bar)"
An expression to be evaluated to determine if this recipient
should be included in the recipient list for a given input
Message. The evaluation result of the expression must be a boolean.
If this attribute is not defined, the channel will always be
among the list of recipients.
An expression to be evaluated to determine if this recipient
should be included in the recipient list for a given input
Message. The evaluation result of the expression must be a boolean.
If this attribute is not defined, the channel will always be
among the list of recipients.
).
]]>
)
]]>
)
The most specific matching exception type is determined
by navigating the hierarchy of 'exception causes'
(e.g., payload.getCause()).
]]>
)
The most specific matching exception type is determined
by navigating the hierarchy of 'exception causes'
(e.g., payload.getCause()).
]]>
A value of the evaluation token that will be mapped to a channel reference
(e.g., mapping value='foo' channel='myChannel')
A reference to a bean that defines a Message Channel
(e.g., mapping value='foo' channel='myChannel')
An expression to be evaluated to determine if this recipient
should be included in the recipient list for a given input
Message. The evaluation result of the expression must be a boolean.
If this attribute is not defined, the channel will always be
among the list of recipients.
Lifecycle attribute signaling if this component should be
started during Application Context startup. Defaults to true.
The receiving Message channel of this endpoint
Reference to the channel where Messages should be sent if
channel resolution fails to return any channels. If no
default output channel is provided, the router will throw an
Exception.
If you would like to silently drop those messages instead,
add the "nullChannel" as the default output channel attribute
value.
Specify the maximum amount of time in milliseconds to wait
when sending Messages to the target MessageChannels. By
default the send will block indefinitely.
Specify whether sequence number and size headers should be added to each
Message. Defaults to false.
Specify whether channel names must always be successfully resolved
to existing channel instances.
If set to 'true', a MessagingException will be raised in case
the channel cannot be resolved. Setting this attribute to 'false',
will cause any unresovable channels to be ignored.
If not explicitly set, 'resolution-required' will
default to 'true'.
Defines a Splitter.
Specify whether the splitter method must return a non-null value. This value will be
FALSE by default, but if set to TRUE, a MessageHandlingException will be thrown when
the underlying service method (or expression) returns a NULL value.
Set this flag to false to prevent adding sequence related headers in this splitter.
This can be convenient in cases where the set sequence numbers conflict with downstream
custom aggregations.
Provide one or more delimiters (as a single String value, e.g. delimiters=",;:") for
tokenizing String-typed payload values. This attribute is only allowed if no 'ref' or
'expression' have been provided since that is when the DefaultMessageSplitter would
be used, and it's the implementation that contains the "delimiters" property.
Defines an aggregating message endpoint.
A SpEL expression to be evaluated against the input message list as its root object.
Boolean flag specifying if MessageGroup should be removed once completed. Useful for
handling late arrival use cases where messages arriving with the correlationKey that
is the same as the completed MessageGroup will be discarded. Default is 'false'
A reference to a bean that implements the release strategy.
The bean can be an implementation of the
ReleaseStrategy interface or a POJO
A method defined on the bean referenced by release-strategy, that implements the completion
decision algorithm.
A SpEL expression to evaluate against a root object that is the Collection of messages within the message group (e.g, size() > 6)
A reference to a bean that implements the decision algorithm as to whether a given
message group is complete. The bean can be an implementation of the
CorrelationStrategy interface or a POJO.
A method defined on the bean referenced by correlation-strategy, that implements the
correlation decision algorithm
A SpEL expression which implements correlation decision
algorithm to apply to the Message (e.g., payload.getPerson().getId() - correlate
based on the 'id' of the 'person' attribute of the message payload object)
The channel where the aggregator will send the messages that timed out (if send-partial-results-
on-expiry is 'false').
Reference to a MessageGroupStore for holding
state in between message processing. The default
is to use a volatile in-memory store, which means that unprocessed messages
will be lost if the JVM exits. To customize
the expiry of incomplete message groups configure the message store.
Specifies whether messages that expired should be aggregated and sent to the 'output-channel' or 'replyChannel'.
Messages are expired when their containing MessageGroup expires. One of the ways of expiring MessageGroups is by
configuring a MessageGroupStoreReaper. However MessageGroups can alternatively be expired by simply calling
MessageGroupStore.expireMessageGroup(groupId). That could be accomplished via a ControlBus operation
or by simply invoking that method if you have a reference to the MessageGroupStore instance.
Defines a resequencing message endpoint.
Comparator for messages used to sort the sequence when released. Defaults to comparing
the
sequence number header.
Flag to say that partial sequences can be released (e.g. 1-4 of 10).
Defaults to true, so the
sequence has to be complete before any messages
are released.
This is mutually exclusive with the release-strategy
attribute (either or none can be specified , but not both).
Defines a list of interceptors. Each element may be a ChannelInterceptor,
ref, or inner-bean.
Reference to a bean in this Application Context that implements ChannelInterceptor
Reference to a bean in this Application Context that implements ChannelInterceptor
Alows you to configure a Wire Tap interceptor that will send a copy of the message to a
channel identified by 'channel' attribute.
Defines a Wire Tap Channel Interceptor.
A reference to a bean in the Application Context
which implements MessageSelector that must accept a message for it to be
sent to the intercepting channel
The timeout for sending the message to the intercepting channel
A SpEL expression to be evaluated against the input Message as its root object.
The key for retrieving the expression from an ExpressionSource.
The reference to an ExpressionSource.
Defines a MessagePublishingInterceptor which allows you to generate messages
as a by-product of
method invocations on Spring configured components.
[REQUIRED] Channel name(s) or patterns. To specify more than one channel use
','
(e.g.,
channel-name-pattern="input*, foo, bar")
[OPTIONAL] Specifies the order in which this interceptor will be
added to the existing channel
interceptors (if any).
Negative value (e.g., -2) will signify BEFORE existing interceptors (if any). Positive
value (e.g., 2)
will signify AFTER existing interceptors (if any)
Allows you to define channel interceptors to be applied globally.
[REQUIRED] Channel name(s) or patterns. To specify more than one channel use
','
(e.g.,
channel-name-pattern="input*, foo, bar")
[OPTIONAL] Specifies the order in which this interceptor will be
added to the existing channel
interceptors (if any).
Negative value (e.g., -2) will signify BEFORE existing iinterceptors (if any). Positive
value (e.g., 2)
will signify AFTER existing interceptors (if any)
Allows you to register Converters (implementation of the Converter interface) that will
be automatically registered with the ConversionService. ConversionService itself does not have to be
explicitly defined since the default ConversionService will be registered under the name 'integrationConversionService'
unless bean with this name is already registered.
Identifies the Message channel where Message will be sent after it's being processed by this endpoint
Specify the maximum amount of time in milliseconds to wait when sending a reply
Message to the
output channel. By default the send will block for one second.
The receiving Message channel of this endpoint
Lifecycle attribute signaling if this component should be
started during Application Context startup. Defaults to true.