From 503ce783956b499b014cfb9ceb77a1e4dd1a86a1 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Wed, 26 Nov 2014 15:54:10 -0500 Subject: [PATCH] INT-3570 Core 4.0 Schema Work Around JIRA: https://jira.spring.io/browse/INT-3570 In 4.1 we removed the 'old' schemas to reduce clutter. However certain extensions such as kafka import the 4.0 schema which is no longer on the classpath when using Spring Integration 4.1 when there is no internet connection. INT-3570 states that we should restore the 4.0 core schema and mapping to resolve this issue. In the meantime, this work around adds the schema to the kafka jar. It should be reverted when INT-3570 is released in Spring Integration 4.1.1. --- .../main/resources/META-INF/spring.schemas | 1 + .../config/xml/spring-integration-4.0.xsd | 4406 +++++++++++++++++ 2 files changed, 4407 insertions(+) create mode 100644 spring-integration-kafka/src/main/resources/org/springframework/integration/config/xml/spring-integration-4.0.xsd diff --git a/spring-integration-kafka/src/main/resources/META-INF/spring.schemas b/spring-integration-kafka/src/main/resources/META-INF/spring.schemas index b5240f8442..d9fb85cdc2 100644 --- a/spring-integration-kafka/src/main/resources/META-INF/spring.schemas +++ b/spring-integration-kafka/src/main/resources/META-INF/spring.schemas @@ -1,2 +1,3 @@ http\://www.springframework.org/schema/integration/kafka/spring-integration-kafka-1.0.xsd=org/springframework/integration/config/xml/spring-integration-kafka-1.0.xsd http\://www.springframework.org/schema/integration/kafka/spring-integration-kafka.xsd=org/springframework/integration/config/xml/spring-integration-kafka-1.0.xsd +http\://www.springframework.org/schema/integration/spring-integration-4.0.xsd=org/springframework/integration/config/xml/spring-integration-4.0.xsd diff --git a/spring-integration-kafka/src/main/resources/org/springframework/integration/config/xml/spring-integration-4.0.xsd b/spring-integration-kafka/src/main/resources/org/springframework/integration/config/xml/spring-integration-4.0.xsd new file mode 100644 index 0000000000..0937f0d642 --- /dev/null +++ b/spring-integration-kafka/src/main/resources/org/springframework/integration/config/xml/spring-integration-4.0.xsd @@ -0,0 +1,4406 @@ + + + + + + + + + + + + + + Enables annotation support for Message Endpoints. + + + + + + + Default output channel for the @Publisher annotation support. + + + + + + + + + + + + + + + Allows you to configure org.springframework.integration.transaction.DefaultTransactionSynchronizationFactory + This implementation of org.springframework.integration.transaction.TransactionSynchronizationFactory + allows you to configure SpEL expressions, with their execution being coordinated (synchronized) with a + transaction - see {TransactionSynchronization}. Expressions for before-commit, after.-commit, and after-rollback + are supported, together with a channel for each where the evaluation result (if any) will be sent. + For each sub-element you can specify 'expression' and/or 'channel' attributes. + If only the 'channel' attribute is present the received Message will be sent there as part of a particular synchronization scenario. + If only the 'expression' attribute is present and the result of an expression is a non-Null value, a Message with the + result as the payload will be generated and sent to a default channel (NullChannel) and will appear in the logs. + If you want the evaluation result to go to a specific channel add a 'channel' attribute. If the result of an expression is null + or void, no Message will be generated. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + A reference to a bean that implements 'org.springframework.integration.store.PriorityCapableChannelMessageStore'. + A message store that supports priority in a manner defined by the store. When set, the underlying + channel will be a 'QueueChannel` that delegates to a `MessageGroupQueue' backed by the store. + Not allowed if 'comparator' is set. + + + + + + + + + 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). + + + + + + + + + + + A reference to a bean that implements the 'org.springframework.integration.dispatcher.LoadBalancingStrategy'. + This attribute is mutually exclusive with 'load-balancer'. + + + + + + + Defines a load-balancing strategy for the channel's dispatcher. + The default is a round-robin load balancer. + This attribute is mutually exclusive with 'load-balancer-ref'. + + + + + + + + + + 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). + + + + + + ). + ]]> + + + + + + + + + + + + + + + + [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. + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + Note, when using the 'expression' attribute, or 'expression' or 'script' sub-element, + there is not yet a root Message object and therefore + the 'payload' and 'headers' properties are not available in the expression or script. + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + 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 ReplyRequiredException will be thrown when + the underlying service method (or expression) returns a null value. + + + + + + + + + + + Base type for Message-handling endpoints. + + + + + + 'id' value: + - Identifies the underlying Spring bean definition (AbstractEndpoint) + - as MessageHandler bean alias together with suffix '.handler' + + + + + + + + + + + + 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. + + + + + + + Each header sub-element provides the name of a message header (via the required 'name' attribute). + 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. + + + + + + + + + Boolean value to indicate whether this header value should overwrite an + existing header value. Unlike the Header Enricher, this attribute is 'true' + by default, similar to the 'property' attribute. + + + + + + + + + + + + + + + + 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 dynamically determined by evaluating an expression + (such as a Message header) or fallback to the + 'default-delay' of this endpoint. + + + + + + + + + + + + + + + + + + + 'transactional' and 'advice-chain' elements specify the configuration List of AOP Advice + to proxy DelayHandler's 'release Message task'. + + + + + + Specify the SpEL expression that evaluates to the delay value in milliseconds, + or a java.util.Date. + + + + + + + + + + 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 expression evaluation result. + + + + + + + Specify the SpEL expression that evaluates to the delay value in milliseconds, + or a java.util.Date. + + + + + + + Specify whether Exceptions thrown by 'expression' evaluation should be + ignored (only logged). In this case case the delayer will fall back to the + to the 'default-delay'. Default behaviour. + If this attribute is specified as 'false', any + 'expression' evaluation Exception will be thrown to the caller without + falling back to the to the 'default-delay'. + + + + + + + [DEPRECATED]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. + This attribute is deprecated in favor of an 'expression' attribute or sub-element. + + + + + + + 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 scheduler + registered in the ApplicationContext {ThreadPoolTaskScheduler} will be + used. + + + + + + + + + + + + Provide a reference to the MessageStore instance that should be used + to store Messages while + awaiting the delay. + + + + + + + + + + + + + + + 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. + + + + + + + Converts the 'replyChannel' and 'errorChannel' headers to a String after registering it in the HeaderChannelRegistry. + Use this when a message is serialized for any reason. No changes are made + if the header does not exist, or if the header does not currently reference a 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 a value for the 'expirationDate' header (java.lang.Long). + + + + + + + Shortcut to specify a value for the 'priority' header. + + + + + + + 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. + + + + + + + + + + Specifies if the result Map of Maps should be transformed further to flat keys of + object's property paths. + Default is 'true'. + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + before or after the transformer. + ]]> + + + + + + Optional reference to a JsonObjectMapper instance. + By default, a JsonObjectMapper that uses a Jackson 2 ObjectMapper, or Jackson ObjectMapper + implementation is used, depending on the jars on the classpath. + Note: for backward compatibility, this attribute can take a reference to the Jackson 1 ObjectMapper bean. + This Jackson 1 ObjectMapper backward compatibility is deprecated + and will be removed in the Spring Integration 3.1 or above. + + + + + + + + + + + + The type of the JSON transformation result. 'STRING' and 'NODE' values are allowed. + If 'NODE', the JSON result tree depends on the provided implementation of + 'org.springframework.integration.support.json.JsonObjectMapper' (e.g. JsonNode for + Jackson). The default value is 'STRING'. + + + + + + + + + + + + + + + + + + + + + Defines a Transformer that converts a JSON String to an object. + + + + + + + + + + + + + + + + + + + + + + + + Optional reference to a JsonObjectMapper instance. + By default, a JsonObjectMapper that uses a Jackson 2 ObjectMapper, or Jackson ObjectMapper + implementation is used, depending on the jars on the classpath. + Note: for backward compatibility this attribute can take a reference to the Jackson 1 ObjectMapper bean. + This Jackson 1 ObjectMapper backward compatibility is deprecated + and will be removed in the Spring Integration 3.1 or above. + + + + + + + + + + + + + + + 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 converts an RFC5424 packet to a Map. + + + + + + + + + + + + + + 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'. + + + + + + + + + + + + + + + + + + + + + + + + + Allows you to specify the Charset (e.g., US-ASCII, + ISO-8859-1, UTF-8) to be used when transforming byte[]. [UTF-8] is the default + + + + + + + + + + + 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 + + + + + + + Throw an exception if the filter rejects the message (default false). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 service method must return a non-null value. This value will be + 'false' by default, but if set to 'true', a ReplyRequiredException 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 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) + + + + + + + + + + + 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 timeout in milliseconds to force the MessageGroup complete, + when the 'ReleaseStrategy' does not 'release' the group when the current Message arrives. + If 'group-timeout' is not provided or is less than '0' the MessageGroup won't be scheduled + to be forced complete. + The action taken when the group is forced complete depends on the + 'send-partial-result-on-expiry' attribute. + Mutually exclusive with the 'group-timeout-expression' attribute. + + + + + + + A SpEL expression to evaluate a 'group-timeout' with the MessageGroup as the #root evaluation + context object for scheduling the MessageGroup forced completion, + when the 'ReleaseStrategy' does not 'release' the group when the current Message arrives. + If 'group-timeout-expression' evaluates to 'null' or less than '0', + the MessageGroup won't be scheduled to be forced complete. + The action taken when the group is forced complete depends on the + 'send-partial-result-on-expiry' attribute. + Mutually exclusive with the 'group-timeout' attribute. + + + + + + + + + + + + Provide a reference to the TaskScheduler instance to schedule 'forceComplete' on + the MessageGroup + when no new message arrives for the MessageGroup within the + 'group-timeout' or 'group-timeout-expression'. If it isn't + provided, the default scheduler 'taskScheduler', + registered in the ApplicationContext {ThreadPoolTaskScheduler} will be + used. This attribute only applies if 'group-timeout' or + 'group-timeout-expression' is specified. + + + + + + + + + + + + A reference to a 'org.springframework.integration.support.locks.LockRegistry' bean + to obtain 'java.util.concurrent.locks.Lock' by 'groupId'. Used for concurrent operations on + MessageGroups. By default an internal 'DefaultLockRegistry' is used. + + + + + + + + + + + + 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. + + + + + + + Only applies if a MessageGroupStoreReaper is configured for this Correlation + Endpoint's MessageStore. + By default, when a MessageGroupStoreReaper is configured to expire partial + groups, empty groups are also removed. Empty groups exist after a group + is released normally. This is to enable the detection and discarding of + late-arriving messages. If you wish to run empty group deletion on a longer + schedule than expiring partial groups, set this property. Empty groups will + then not be removed from the MessageStore until they have not been modified + for at least this number of milliseconds. + Note that the actual time to expire an + empty group will also be affected by the reaper's 'timeout' + property and it could be as much as this value plus the timeout. + + + + + + + + + + + Defines a resequencing message endpoint. + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + 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 interceptors (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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the name of the SpEL function. + + + + + + + The fully qualified class name where to find the static method for SpEL function. + + + + + + + + + + + + The method signature in the form 'methodName[([arg_list])]', + where 'arg_list' is an optional, comma-separated list of fully-qualified + type names. + + + + + + + + + + Allows you to register PropertyAccessors (implementation of the PropertyAccessor interface) that will + be automatically registered with the SpEL EvaluationContext. + Note, the 'id' attribute of the bean definition below is required. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + or poller + sub element. + Used to take action after the transaction completes () or after + the channel.send() is complete (). + ]]> + + + + ), + or after the transaction commits (). The #root variable of the + expression evaluation is the original message; a BeanResolver is also available. + ]]> + + + + + + + + + + + + + + + ), + or after the transaction rolls back (). The #root variable of the + expression evaluation is the original message; a BeanResolver is also available. + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +