+ )
+}
diff --git a/ui/src/components/toolbar/assistant/llmClient.ts b/ui/src/components/toolbar/assistant/llmClient.ts
index 3cb92e1d..8d91fb6e 100644
--- a/ui/src/components/toolbar/assistant/llmClient.ts
+++ b/ui/src/components/toolbar/assistant/llmClient.ts
@@ -5,7 +5,7 @@ import { KEIP_ASSISTANT_OLLAMA_URL } from "../../../singletons/externalEndpoints
import { EipConfig, SerializedFlow } from "../../../singletons/store/api"
import { EXPORTED_FLOW_VERSION } from "../../../singletons/store/appStore"
-import { EIP_NODE_TYPE } from "../../../api/flow"
+import { CustomNodeType } from "../../../api/flow"
import {
getEdgesView,
getEipId,
@@ -156,7 +156,7 @@ const convertToSerializedFlow = (
): SerializedFlow => ({
nodes: response.nodes.map((node) => ({
...node,
- type: EIP_NODE_TYPE,
+ type: CustomNodeType.EipNode,
data: { label: node?.data?.label },
})),
edges: response.edges,
diff --git a/ui/src/json/springIntegrationEipComponents.json b/ui/src/json/springIntegrationEipComponents.json
index ef1e1da7..1255cb7d 100644
--- a/ui/src/json/springIntegrationEipComponents.json
+++ b/ui/src/json/springIntegrationEipComponents.json
@@ -1 +1 @@
-{"file":[{"role":"transformer","connectionType":"passthru","name":"file-to-string-transformer","description":"Creates a \u0027org.springframework.integration.file.transformer.FileToStringTransformer\u0027 that converts a File payload to a String.","attributes":[{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition (EventDrivenConsumer)","required":false},{"name":"charset","type":"string","description":" Set the charset name to use when converting a File payload to a String, e.g. charset\u003d\"UTF-8\". If not set, the default charset of this Java virtual machine is used. ","required":false},{"name":"input-channel","type":"string","description":" The input channel of the transformer. ","required":false},{"name":"delete-files","type":"string","description":" The delete-files option signals to the transformer that it should delete the inbound File after the transformation is complete. ","required":false},{"name":"output-channel","type":"string","description":" The channel to which the transformer will send the transformed message. Optional, because incoming messages can specify a reply channel using the \u0027replyChannel\u0027 message header value themselves. ","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.file.FileWritingMessageHandler\u0027 with \u0027expectReply \u003d false\u0027 that writes Message payloads to a File.","attributes":[{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the destination directory if it does not yet exist when this adapter is being initialized. The default value is \u0027true\u0027. If set to \u0027false\u0027 and the directory does not exist upon initialization, an Exception will be thrown.","default":"true","required":false},{"name":"preserve-timestamp","type":"string","description":"Specify whether to preserve the modified timestamp from the source file on the destination file after copying. Applies to \u0027java.io.File\u0027 payloads. For other payload types, the optional \u0027file_setModified\u0027 header will be used, if present (and a \u0027Number\u0027), to set the lastModified time. By default, the timestamp will NOT be preserved.","default":"false","required":false},{"name":"filename-generator-expression","type":"string","description":"Allows you to provide a SpEL expression which will compute the file name of the target file (e.g., assuming payload is java.io.File \"payload.name + \u0027.transferred\u0027\");","required":false},{"name":"append-new-line","type":"string","description":"Set to \u0027true\u0027 to append a new-line after each write. It is \u0027false\u0027 by default.","default":"false","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition (EventDrivenConsumer)","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"mode","type":"string","description":"This attribute defaults to \u0027REPLACE\u0027 if not set explicitly. The following options are available: APPEND: If append is specified, the data will be appended to the existing file if such file exists, otherwise the new file will be created as usual but, once created, the subsequent data will be appended to it. This attribute is mutually exclusive with the use of a temporary file, since append is done to the actual file and not its temporary counterpart. The file is closed after each write. If set to APPEND, the component will also use instance of the LockRegistry to ensure that there are no collisions when multiple threads are writing to the same file. APPEND_NO_FLUSH: Same as \u0027APPEND\u0027 but the data is not flushed or the file closed. This can significantly improve performance at the risk of lost data in the event of a failure. Various strategies are available for flushing the data and closing the file. Refer to the reference documentation for more information. FAIL: If the target file exists, a MessageHandlingException is thrown. IGNORE: If the target file exists, the message payload is silently ignored. REPLACE: This is the default behavior when writing files. If the target file already exists, it will be overwritten. REPLACE_IF_MODIFIED: If the local file already exists, it will be overwritten only if the last modified timestamp does not match the source timestamp. Only applies to local files.","required":false,"restriction":{"type":"enum","values":["REPLACE","REPLACE_IF_MODIFIED","APPEND","APPEND_NO_FLUSH","FAIL","IGNORE"]}},{"name":"flush-interval","type":"string","description":"When using \u0027mode\u003dAPPEND_NO_FLUSH\u0027, if this time (ms) elapses without any new writes, the data is flushed and the file closed. Default 30000.","required":false},{"name":"flush-when-idle","type":"boolean","description":"When using \u0027mode\u003dAPPEND_NO_FLUSH\u0027, set to false to indicate the \u0027flush-interval\u0027 starts from the first new write to a previously flushed (or new) file. When true, the interval starts from the last write (the file is flushed if it has no writes during the interval). Default true.","default":"true","required":false},{"name":"directory","type":"string","description":" Specifies the output directory, e.g.: directory\u003d\"file:/absolute/output\" or directory\u003d\"file:relative/output\" Either this attribute or \u0027directory-expression\u0027 must be provided.","required":false},{"name":"filename-generator","type":"string","description":" Allows you to provide a reference to the FileNameGenerator strategy to use when generating the destination file\u0027s name. If not specified the DefaultFileNameGenerator is used. ","required":false},{"name":"delete-source-files","type":"string","description":"Specify whether to delete source files after writing to the destination directory. This will take effect if the Message payload is the actual source File instance or if the original File instance (or its path) is available in the header value associated with the FileHeaders.ORIGINAL_FILE constant. The default value is false.","required":false},{"name":"directory-expression","type":"string","description":" Specifies the output directory using a SpEL expression. This allows you to dynamically specify the output directory on a per message basis. For example a message header or payload property can be used for specifying the destination directory at runtime. ","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when uploading files. We change it after we know it\u0027s uploaded. This attribute is mutually exclusive with \u0027append\u0027 since the append is done to the actual file and not its temporary counterpart. The default value of this attribute (i.e., .writing) is ignored when \u0027append\u0027 is set to true.","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"chmod","type":"string","description":"Change the mode of the file (or remote file) after writing. Integer value expressed in Octal, e.g. \u0027644\u0027.","required":false},{"name":"channel","type":"string","description":"The channel through which outgoing messages will arrive.","required":false},{"name":"buffer-size","type":"string","description":"The buffer size to use when writing to files. Default 8192 bytes.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"flush-predicate","type":"string","description":"When using \u0027mode\u003dAPPEND_NO_FLUSH\u0027, a reference to a \u0027FlushPredicate\u0027 implementation used when a message is sent to the message handler\u0027s \u0027MessageTriggerAction.trigger()\u0027 method. By default, the payload of such a message must be a Regex used to match the file absolute path.","required":false},{"name":"charset","type":"string","description":"Set the charset name to use when writing a File from a String-based Message payload, e.g. charset\u003d\"UTF-8\". If not set, the default charset of this Java virtual machine is used.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"file-to-bytes-transformer","description":"Creates a \u0027org.springframework.integration.file.transformer.FileToByteArrayTransformer\u0027 that converts a File payload to an array of bytes.","attributes":[{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition (EventDrivenConsumer)","required":false},{"name":"input-channel","type":"string","description":" The input channel of the transformer. ","required":false},{"name":"delete-files","type":"string","description":" The delete-files option signals to the transformer that it should delete the inbound File after the transformation is complete. ","required":false},{"name":"output-channel","type":"string","description":" The channel to which the transformer will send the transformed message. Optional, because incoming messages can specify a reply channel using the \u0027replyChannel\u0027 message header value themselves. ","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"tee","name":"splitter","description":"Creates a \u0027org.springframework.integration.file.splitter.FileSplitter\u0027 that splits text-based files into lines.","attributes":[{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition (EventDrivenConsumer)","required":false},{"name":"markers","type":"boolean","description":"Set to \u0027true\u0027 to emit start/end of file marker messages before and after the file data. Markers are messages with \u0027FileSplitter.FileMarker\u0027 payloads (with \u0027START\u0027 and \u0027END\u0027 values in the \u0027mark\u0027 property). Markers might be used when sequentially processing files in a downstream flow where some lines are filtered. The \u0027END\u0027 marker includes a line count. They enable the downstream processing to know when a file has been completely processed. A header \u0027file_marker\u0027 is also added, containing START/END appropriately. Default: \u0027false\u0027. When \u0027true\u0027, \u0027apply-sequence\u0027 is \u0027false\u0027 by default. Also see \u0027markers-json\u0027.","default":"false","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"discard-channel","type":"string","description":"The channel where the splitter will send the messages that return an empty container from split function.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"first-line-as-header","type":"string","description":"The header name for the first line to be carried as a header in the messages emitted for the remaining lines.","required":false},{"name":"apply-sequence","type":"boolean","description":"Set this flag to determine whether sequence related headers are added to messages from this splitter. When true, existing correlation and sequence related headers are pushed onto a stack; downstream components, such as aggregators may pop the stack to revert the existing headers after aggregation. Default is \u0027true\u0027 unless \u0027markers\u0027 is \u0027true\u0027. Also see \u0027iterator\u0027.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"charset","type":"string","description":" Set the charset name to use when reading bytes from the text-based file into String payloads, e.g. charset\u003d\"UTF-8\". If not set, the default charset of this Java virtual machine is used. ","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"markers-json","type":"boolean","description":"When \u0027markers\u0027 is true, if this is \u0027true\u0027, the message payload of the marker is a JSON String representation of the marker object. Requires a supported JSON processor library on the classpath (Jackson, Boon).","default":"false","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"requires-reply","type":"boolean","description":"Specify whether the splitter must return at least one message. This value will be \u0027false\u0027 by default, but if set to \u0027true\u0027, a ReplyRequiredException will be thrown when the file has no data.","default":"false","required":false},{"name":"iterator","type":"boolean","description":"Set this flag to determine whether the lines are emitted via an iterator (line at a time) or the whole file is read into memory and then the lines emitted. When this is \u0027true\u0027, if \u0027apply-sequence\u0027 is also \u0027true\u0027, the \u0027sequenceSize\u0027 header is set to \u00270\u0027. Default: \u0027true\u0027.","default":"true","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"source","name":"tail-inbound-channel-adapter","description":"Configures a Message Producing Endpoint for the \u0027org.springframework.integration.file.tail.FileTailingMessageProducerSupport that \u0027tails\u0027 a file on the filesystem.","attributes":[{"name":"reopen","type":"boolean","description":"Does not apply to the native adapter. If \u0027true\u0027, close and reopen the file between reading chunks. Default \u0027false\u0027. Note: Setting this option forces the use of the Apache Tailer implementation instead of the native \u0027tail\u0027 command.","required":false},{"name":"task-scheduler","type":"string","description":"A reference to a TaskScheduler; the default is the \u0027taskScheduler\u0027 bean which is automatically configured for all Spring Integration applications. The scheduler is used by the native adapter to reschedule the \u0027tail\u0027 process after a failure according to the \u0027file-delay\u0027, and also it is used to emit idle event.","required":false},{"name":"channel","type":"string","description":"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).","required":false},{"name":"end","type":"boolean","description":"Does not apply to the native adapter. Set to \u0027true\u0027 to tail from the end of the file, \u0027false\u0027 to tail from the beginning of the file. Default \u0027true\u0027. Note: Setting this option forces the use of the Apache Tailer implementation instead of the native \u0027tail\u0027 command.","required":false},{"name":"native-options","type":"string","description":"Configures the adapter to exec \u0027tail\u0027 with these options (appended by the file name). Default: \"-F -n 0\" (follow the filename and emit no existing lines). This attribute is not allowed if \u0027delay\u0027 \u0027end\u0027 or \u0027reopen\u0027 is specified, which cause the Apache commons-io \u0027Tailer\u0027 class to be used instead of using a native \u0027tail\u0027 command.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"file-delay","type":"string","description":"The delay in milliseconds between attempts to open the file when no file was found (Apache adapter). For the native adapter, this is used as a delay before starting a new process after process failures. On some platforms, when the file doesn\u0027t exist, the \u0027tail\u0027 process is suspended until the file appears; on other platforms, the \u0027tail\u0027 process exits immediately if the file doesn\u0027t exist. Default 5000.","required":false},{"name":"id","type":"string","required":false},{"name":"idle-event-interval","type":"string","description":"The delay in milliseconds between idle events when no new lines are being tailed.","required":false},{"name":"task-executor","type":"string","description":"A reference to a TaskExecutor; the default is a SimpleAsyncTaskExecutor; the native adapter uses three threads - one for reading stdout, one for reading stderr and one for monitoring the process.","required":false},{"name":"file","type":"string","description":"The fully qualified name of the file to be tailed.","required":false},{"name":"error-channel","type":"string","description":"Message Channel to which error Messages should be sent.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"delay","type":"string","description":"Does not apply to the native adapter - the delay in milliseconds between polls when no new data was detected in the file. Default 1000. Note: Setting this option forces the use of the Apache Tailer implementation instead of the native \u0027tail\u0027 command.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"enable-status-reader","type":"boolean","description":"Configure the adapter to either start a thread for capturing stderr or not. Default: True","default":"true","required":false}]},{"role":"endpoint","connectionType":"source","name":"inbound-channel-adapter","description":"Configures a \u0027SourcePollingChannelAdapter\u0027 Endpoint for the \u0027org.springframework.integration.file.FileReadingMessageSource\u0027 that polls a directory and sends Messages whose payloads are instances of java.io.File.","attributes":[{"name":"channel","type":"string","description":"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).","required":false},{"name":"scan-each-poll","type":"boolean","description":"Set this flag if you want to make sure the internal queue is refreshed with the latest content of the input directory on each poll.","default":"false","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"filename-pattern","type":"string","description":"Only files matching this ant style path will be picked up by this adapter. Note that in Spring Integration 1.0 this attribute accepted a regular expression, but from 2.0 filename-regex should be used for that purpose instead.","required":false},{"name":"comparator","type":"string","description":"Specify a Comparator to be used when ordering Files. If none is provided, the order will be determined by the java.io.File implementation of Comparable. MUTUALLY EXCLUSIVE with queue-size.","required":false},{"name":"prevent-duplicates","type":"string","description":"A boolean flag indicating whether duplicates should be prevented. If a \u0027filter\u0027 reference is provided, duplicate prevention will not be enabled by default (the assumption is that the provided filter is sufficient), but setting this to true will enable it. If a \u0027filename-pattern\u0027 is provided, duplicate prevention will be enabled by default (preceding the pattern matching), but setting this to false will disable it. If neither \u0027filter\u0027 or \u0027filename-pattern\u0027 is provided, duplicate prevention is enabled by default, but setting this to false will disable it. For more detail on the actual duplicate prevention, see the javadoc for AcceptOnceFileListFilter.","required":false},{"name":"id","type":"string","required":false},{"name":"use-watch-service","type":"boolean","description":"Indicates if the \u0027FileReadingMessageSource\u0027 should use an internal \u0027DirectoryScanner\u0027 for the Java 7 \u0027WatchService\u0027. Mutually exclusive with \u0027scanner\u0027 attribute.","required":false},{"name":"ignore-hidden","type":"boolean","description":"A boolean flag indicating whether hidden files shall be ignored. If set to \u0027false\u0027, hidden files will be processed. If not specified, this value will default to \u0027true\u0027 and an \u0027IgnoreHiddenFileListFilter\u0027 will be added.","required":false},{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the source directory if it does not yet exist when this adapter is being initialized. The default value is \u0027true\u0027. If set to \u0027false\u0027 and the directory does not exist upon initialization, an Exception will be thrown.","default":"true","required":false},{"name":"filename-regex","type":"string","description":"Only files matching this regular expression will be picked up by this adapter.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"filter","type":"string","description":"Specify a FileListFilter to be used. By default, an AcceptOnceFileListFilter is used, which ensures files are picked up only once from the directory. You can also apply multiple filters by referencing a CompositeFileListFilter.","required":false},{"name":"watch-events","type":"string","description":"Comma-separated value for the \u0027FileReadingMessageSource.WatchEventType\u0027s to specify which kinds of files system events the \u0027WatchService\u0027 will listen to. Used only if \u0027use-watch-service \u003d\u003d true\u0027.","default":"CREATE","required":false,"restriction":{"type":"enum","values":["CREATE","MODIFY","DELETE"]}},{"name":"scanner","type":"string","description":"Reference to a custom DirectoryScanner implementation. Mutually exclusive with \u0027use-watch-service\u0027 attribute.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"directory","type":"string","description":"Specifies the input directory (The directory to poll from) e.g.: directory\u003d\"file:/absolute/input\" or directory\u003d\"file:relative/input\"","required":true},{"name":"queue-size","type":"number","description":"Specify the maximum number of files stored in memory by the underlying FileReadingMessageSource. This is useful to limit the memory footprint of this endpoint. Using a stateful filter would counter this benefit, so AcceptOnceFileListFilter is not used when this attribute is specified. MUTUALLY EXCLUSIVE with comparator, if comparator is set this attribute will be ignored. MUTUALLY EXCLUSIVE with stateful filtering.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"locker","description":" When multiple processes are reading from the same directory it can be desirable to lock files to prevent them from being picked up concurrently. To do this you can specify a reference to a FileLocker. ","attributes":[{"name":"ref","type":"string","description":" The reference to the FileLocker. ","required":false}]},{"occurrence":{"min":0},"name":"nio-locker","description":" When multiple processes are reading from the same directory it can be desirable to lock files to prevent them from being picked up concurrently. This is a java.nio based implementation available out of the box. "}]}},{"role":"endpoint","connectionType":"request_reply","name":"outbound-gateway","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.file.FileWritingMessageHandler\u0027 that writes request Message payloads to a File and then generates a reply Message containing the newly written File as its payload.","attributes":[{"name":"filename-generator-expression","type":"string","description":"Allows you to provide a SpEL expression which will compute the file name of the target file (e.g., assuming payload is java.io.File \"payload.name + \u0027.transferred\u0027\");","required":false},{"name":"append-new-line","type":"string","description":"Set to \u0027true\u0027 to append a new-line after each write. It is \u0027false\u0027 by default.","default":"false","required":false},{"name":"requires-reply","type":"string","description":"Specify whether this outbound gateway must return a non-null value. This value is \u0027true\u0027 by default, and a ReplyRequiredException will be thrown when the underlying service returns a null value.","default":"true","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition (EventDrivenConsumer)","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"flush-when-idle","type":"boolean","description":"When using \u0027mode\u003dAPPEND_NO_FLUSH\u0027, set to false to indicate the \u0027flush-interval\u0027 starts from the first new write to a previously flushed (or new) file. When true, the interval starts from the last write (the file is flushed if it has no writes during the interval). Default true.","default":"true","required":false},{"name":"directory","type":"string","description":" Specifies the output directory, e.g.: directory\u003d\"file:/absolute/output\" or directory\u003d\"file:relative/output\" Either this attribute or \u0027directory-expression\u0027 must be provided.","required":false},{"name":"filename-generator","type":"string","description":" Allows you to provide a reference to the FileNameGenerator strategy to use when generating the destination file\u0027s name. If not specified the DefaultFileNameGenerator is used. ","required":false},{"name":"delete-source-files","type":"string","description":"Specify whether to delete source files after writing to the destination directory. This will take effect if the Message payload is the actual source File instance or if the original File instance (or its path) is available in the header value associated with the FileHeaders.ORIGINAL_FILE constant. The default value is false.","required":false},{"name":"reply-channel","type":"string","description":" After writing the File, it will be sent to the specified reply channel as the payload of a Message. Another way of providing the \u0027reply-channel\u0027 is by setting the MessageHeaders.REPLY_CHANNEL Message Header ","required":false},{"name":"request-channel","type":"string","description":"The channel through which outgoing messages will arrive.","required":false},{"name":"buffer-size","type":"string","description":"The buffer size to use when writing to files. Default 8192 bytes.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"flush-predicate","type":"string","description":"When using \u0027mode\u003dAPPEND_NO_FLUSH\u0027, a reference to a \u0027FlushPredicate\u0027 implementation used when a message is sent to the message handler\u0027s \u0027MessageTriggerAction.trigger()\u0027 method. By default, the payload of such a message must be a Regex used to match the file absolute path.","required":false},{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the destination directory if it does not yet exist when this adapter is being initialized. The default value is \u0027true\u0027. If set to \u0027false\u0027 and the directory does not exist upon initialization, an Exception will be thrown.","default":"true","required":false},{"name":"preserve-timestamp","type":"string","description":"Specify whether to preserve the modified timestamp from the source file on the destination file after copying. Applies to \u0027java.io.File\u0027 payloads. For other payload types, the optional \u0027file_setModified\u0027 header will be used, if present (and a \u0027Number\u0027), to set the lastModified time. By default, the timestamp will NOT be preserved.","default":"false","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds.","required":false},{"name":"mode","type":"string","description":"This attribute defaults to \u0027REPLACE\u0027 if not set explicitly. The following options are available: APPEND: If append is specified, the data will be appended to the existing file if such file exists, otherwise the new file will be created as usual but, once created, the subsequent data will be appended to it. This attribute is mutually exclusive with the use of a temporary file, since append is done to the actual file and not its temporary counterpart. The file is closed after each write. If set to APPEND, the component will also use instance of the LockRegistry to ensure that there are no collisions when multiple threads are writing to the same file. APPEND_NO_FLUSH: Same as \u0027APPEND\u0027 but the data is not flushed or the file closed. This can significantly improve performance at the risk of lost data in the event of a failure. Various strategies are available for flushing the data and closing the file. Refer to the reference documentation for more information. FAIL: If the target file exists, a MessageHandlingException is thrown. IGNORE: If the target file exists, the message payload is silently ignored. REPLACE: This is the default behavior when writing files. If the target file already exists, it will be overwritten. REPLACE_IF_MODIFIED: If the local file already exists, it will be overwritten only if the last modified timestamp does not match the source timestamp. Only applies to local files.","required":false,"restriction":{"type":"enum","values":["REPLACE","REPLACE_IF_MODIFIED","APPEND","APPEND_NO_FLUSH","FAIL","IGNORE"]}},{"name":"flush-interval","type":"string","description":"When using \u0027mode\u003dAPPEND_NO_FLUSH\u0027, if this time (ms) elapses without any new writes, the data is flushed and the file closed. Default 30000.","required":false},{"name":"directory-expression","type":"string","description":" Specifies the output directory using a SpEL expression. This allows you to dynamically specify the output directory on a per message basis. For example a message header or payload property can be used for specifying the destination directory at runtime. ","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when uploading files. We change it after we know it\u0027s uploaded. This attribute is mutually exclusive with \u0027append\u0027 since the append is done to the actual file and not its temporary counterpart. The default value of this attribute (i.e., .writing) is ignored when \u0027append\u0027 is set to true.","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"chmod","type":"string","description":"Change the mode of the file (or remote file) after writing. Integer value expressed in Octal, e.g. \u0027644\u0027.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"charset","type":"string","description":"Set the charset name to use when writing a File from a String-based Message payload, e.g. charset\u003d\"UTF-8\". If not set, the default charset of this Java virtual machine is used.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}}],"ftp":[{"role":"endpoint","connectionType":"source","name":"inbound-channel-adapter","description":"Configures a \u0027SourcePollingChannelAdapter\u0027 Endpoint for the \u0027org.springframework.integration.ftp.inbound.FtpInboundFileSynchronizingMessageSource\u0027 that synchronizes a local directory with the contents of a remote FTP endpoint.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"preserve-timestamp","type":"string","description":"Specify whether to preserve the modified timestamp from the remote source file on the local file after copying. By default, the remote timestamp will NOT be preserved.","default":"false","required":false},{"name":"channel","type":"string","description":"Identifies channel attached to this adapter. The channel to which messages will be sent by this adapter.","required":false},{"name":"id","type":"string","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when downloading files. We change it right after we know it\u0027s downloaded.","required":false},{"name":"local-filter","type":"string","description":"Allows you to specify a reference to a [org.springframework.integration.file.filters.FileListFilter] bean. This filter is applied to files after they have been retrieved. The default is an AcceptOnceFileListFilter which means that, even if a new instance of a file is retrieved from the remote server, a message won\u0027t be generated. The filter provided here is combined with a filter that prevents the message source from processing files that are currently being downloaded.","required":false},{"name":"metadata-store-prefix","type":"string","description":"Specify a prefix for metadata store to distinguish keys from another places where the same shared store is used. By default, the remote a component name is used.","required":false},{"name":"max-fetch-size","type":"string","description":"When fetching objects from some external resource, limit the number of such objects that will be retrieved on each fetch. A negative value (default) indicates no limit; a value of zero effectively disables fetching remote objects.","required":false},{"name":"local-directory","type":"string","description":"Identifies the directory path (e.g., \"/local/mytransfers\") where files will be transferred TO.","required":true},{"name":"comparator","type":"string","description":"Specify a Comparator to be used when ordering Files. If none is provided, the order will be determined by the java.io.File implementation of Comparable.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"scanner","type":"string","description":"Reference to a custom DirectoryScanner implementation.","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false},{"name":"local-filename-generator-expression","type":"string","description":"Allows you to provide a SpEL expression to generate the file name of the local (transferred) file. The root object of the SpEL evaluation is the name of the original file. For example, a valid expression would be \"#this.toUpperCase() + \u0027.a\u0027\" where #this represents the original name of the remote file.","required":false},{"name":"auto-create-local-directory","type":"string","description":"Tells this adapter if the local directory must be auto-created if it doesn\u0027t exist. Default is TRUE.","required":false},{"name":"delete-remote-files","type":"string","description":"Specify whether to delete the remote source file after copying. By default, the remote files will NOT be deleted.","default":"false","required":false},{"name":"filename-pattern","type":"string","description":"Allows you to provide a file name pattern to determine the file names that need to be scanned. This is based on simple pattern matching (e.g., \"*.txt, fo*.txt\" etc.)","required":false},{"name":"remote-file-metadata-store","type":"string","description":"Reference to a MetadataStore for saving remote files information between synchronization and polling.","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with an [org.apache.commons.net.ftp.FTPFile] generic type parameter.","required":true},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"filter","type":"string","description":"Allows you to specify a reference to a [org.springframework.integration.file.filters.FileListFilter] bean. This filter is applied to files on the remote server and only files that pass the filter are retrieved.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"filename-regex","type":"string","description":"Allows you to provide a Regular Expression to determine the file names that need to be scanned. (e.g., \"f[o]+\\.txt\" etc.)","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"request_reply","name":"outbound-gateway","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.ftp.gateway.FtpOutboundGateway\u0027 used to issue FTP commands.","attributes":[{"name":"requires-reply","type":"string","description":"Specify whether this outbound gateway must return a non-null value. This value is \u0027true\u0027 by default, and a ReplyRequiredException will be thrown when the underlying service returns a null value.","default":"true","required":false},{"name":"mput-regex","type":"string","description":"Allows you to provide Regular Expression to determine the file names sent by the \u0027mput\u0027 command (e.g., \"f[o]+\\.txt\" etc.) Only one of \u0027mput-filter\u0027, \u0027mput-pattern\u0027, or \u0027mput-regex\u0027 is allowed.","required":false},{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the remote target directory if it doesn\u0027t exist.","default":"false","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"mput-filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027mput-filter\u0027 attribute.","required":false},{"name":"id","type":"string","required":false},{"name":"mput-filter","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.filters.FileListFilter] bean. This filter acts on the local file system when using the \u0027mput\u0027 command. Only one of \u0027mput-filter\u0027, \u0027mput-pattern\u0027, or \u0027mput-regex\u0027 is allowed.","required":false},{"name":"command","type":"string","description":"FTP command.","required":false,"restriction":{"type":"enum","values":["ls","nlst","get","rm","mget","mv","put","mput"]}},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when downloading files. We change it right after we know it\u0027s downloaded.","required":false},{"name":"filename-pattern","type":"string","description":"Allows you to provide file name pattern to determine the file names retrieved by the \u0027ls\u0027 and \u0027mget\u0027 commands and is based on simple pattern matching algorithm (e.g., \"*.txt, fo*.txt\" etc.) Only one of \u0027filter\u0027, \u0027filename-pattern\u0027, or \u0027filename-regex\u0027 is allowed.","required":false},{"name":"expression","type":"string","description":"SpEL expression representing the path in the command (e.g. ls path to list the files in directory path).","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"temporary-remote-directory","type":"string","description":"Identifies the remote temporary directory path (e.g., \"/remote/temp/mytransfers\")","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false},{"name":"local-filename-generator-expression","type":"string","description":"Allows you to provide a SpEL expression to generate the file name of the local (transferred) file. The root object of the SpEL evaluation is the request Message, but the name of the original remote file is also provided as the \u0027remoteFileName\u0027 variable. For example, a valid expression would be: \"#remoteFileName.toUpperCase() + headers.foo\". Only used with \u0027get\u0027 and \u0027mget\u0027 commands.","required":false},{"name":"auto-create-local-directory","type":"boolean","description":"Tells this adapter if local directory must be auto-created if it doesn\u0027\u0027t exist. Default is TRUE.","required":false},{"name":"request-channel","type":"string","description":"Identifies the request channel attached to this gateway.","required":false},{"name":"mput-pattern","type":"string","description":"Allows you to provide file name pattern to determine the file names sent by the \u0027mput\u0027 command and is based on simple pattern matching algorithm (e.g., \"*.txt, fo*.txt\" etc.) Only one of \u0027mput-filter\u0027, \u0027mput-pattern\u0027, or \u0027mput-regex\u0027 is allowed.","required":false},{"name":"command-options","type":"string","description":"FTP command options; for ls, -1 means just return the file names (otherwise file metadata is returned, -dirs means include directories (not included by default), -links means include links (not included by default); for get, -P means preserve timestamp from remote file.","required":false},{"name":"remote-filename-generator","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.FileNameGenerator] bean.","required":false},{"name":"session-callback","type":"string","description":"The \u0027MessageSessionCallback\u0027 bean reference to perform custom operation(s) on \u0027Session\u0027 with \u0027requestMessage\u0027.","required":false},{"name":"local-directory-expression","type":"string","description":"Specifies SpEL expression to generate the directory path where file will be transferred TO, when using \u0027get\u0027 and \u0027mget\u0027 commands. The root object of the SpEL evaluation is the request Message, but the name of the source remote directory is also provided as the \u0027remoteDirectory\u0027 variable. For example, a valid expression might be: \"\u0027/local/\u0027 + #remoteDirectory.toUpperCase() + headers.foo\". Only used with \u0027get\u0027 and \u0027mget\u0027 commands. This attribute is mutually exclusive with \u0027local-directory\u0027.","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds.","required":false},{"name":"mode","type":"string","description":"This attribute defaults to \u0027REPLACE\u0027 if not set explicitly. The following options are available: APPEND: If append is specified, the data will be appended to the existing file if such file exists, otherwise the new file will be created as usual but, once created, the subsequent data will be appended to it. This attribute is mutually exclusive with the use of a temporary file, since append is done to the actual file and not its temporary counterpart. The file is closed after each write. If set to APPEND, the component will also use instance of the LockRegistry to ensure that there are no collisions when multiple threads are writing to the same file. APPEND_NO_FLUSH: Same as \u0027APPEND\u0027 but the data is not flushed or the file closed. This can significantly improve performance at the risk of lost data in the event of a failure. Various strategies are available for flushing the data and closing the file. Refer to the reference documentation for more information. FAIL: If the target file exists, a MessageHandlingException is thrown. IGNORE: If the target file exists, the message payload is silently ignored. REPLACE: This is the default behavior when writing files. If the target file already exists, it will be overwritten. REPLACE_IF_MODIFIED: If the local file already exists, it will be overwritten only if the last modified timestamp does not match the source timestamp. Only applies to local files.","required":false,"restriction":{"type":"enum","values":["REPLACE","REPLACE_IF_MODIFIED","APPEND","APPEND_NO_FLUSH","FAIL","IGNORE"]}},{"name":"filter","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.filters.FileListFilter] bean. This filter acts against the remote server view when using the \u0027ls\u0027 or \u0027mget\u0027 commands. Only one of \u0027filter\u0027, \u0027filename-pattern\u0027, or \u0027filename-regex\u0027 is allowed.","required":false},{"name":"reply-channel","type":"string","description":"Identifies the reply channel attached to this gateway.","required":false},{"name":"temporary-remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the temporary directory path to where files will be transferred before they are moved to the remote-directory (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/temp/myTransfers\u0027\");","required":false},{"name":"working-dir-expression","type":"string","description":"The SpEL expression to evaluate FTP client working directory against request message.","required":false},{"name":"filename-regex","type":"string","description":"Allows you to provide Regular Expression to determine the file names retrieved by the \u0027ls\u0027 and \u0027mget\u0027 commands. (e.g., \"f[o]+\\.txt\" etc.) Only one of \u0027filter\u0027, \u0027filename-pattern\u0027, or \u0027filename-regex\u0027 is allowed.","required":false},{"name":"local-directory","type":"string","description":"Identifies directory path (e.g., \"/local/mytransfers\") where file will be transferred TO. This attribute is mutually exclusive with \u0027local-directory-expression\u0027.","required":false},{"name":"remote-filename-generator-expression","type":"string","description":"Allows you to provide SpEL expression which will compute file name of the remote file (e.g., assuming payload is java.io.File \"payload.getName() + \u0027.transferred\u0027\");","required":false},{"name":"chmod","type":"string","description":"Change the mode of the file (or remote file) after writing. Integer value expressed in Octal, e.g. \u0027644\u0027.","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with an [org.apache.commons.net.ftp.FTPFile] generic type parameter.","required":true},{"name":"rename-expression","type":"string","description":"SpEL expression representing the path for the new filename when using the \u0027mv\u0027 command. Defaults to \"headers.[\u0027file_renameTo\u0027]\".","required":false},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"use-temporary-file-name","type":"string","description":"Allows you to suppress using a temporary file name while writing the file.","default":"true","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"order","type":"string","description":"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, or when a failure in the delivery to one subscriber should signal that the message should not be sent to subscribers with a higher \u0027order\u0027 attribute. It has no effect when this endpoint itself is a Polling Consumer for a channel with a queue.","required":false},{"name":"charset","type":"string","description":"Allows you to specify Charset (e.g., US-ASCII, ISO-8859-1, UTF-8). [UTF-8] is default - used when converting String payloads to bytes.","default":"UTF-8","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.file.remote.handler.FileTransferringMessageHandler\u0027 for the \u0027FtpRemoteFileTemplate\u0027 that writes files to a remote FTP endpoint.","attributes":[{"name":"remote-filename-generator","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.FileNameGenerator] bean.","required":false},{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the remote target directory if it doesn\u0027t exist.","default":"false","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"mode","type":"string","description":"This attribute defaults to \u0027REPLACE\u0027 if not set explicitly. The following options are available: APPEND: If append is specified, the data will be appended to the existing file if such file exists, otherwise the new file will be created as usual but, once created, the subsequent data will be appended to it. This attribute is mutually exclusive with the use of a temporary file, since append is done to the actual file and not its temporary counterpart. The file is closed after each write. If set to APPEND, the component will also use instance of the LockRegistry to ensure that there are no collisions when multiple threads are writing to the same file. APPEND_NO_FLUSH: Same as \u0027APPEND\u0027 but the data is not flushed or the file closed. This can significantly improve performance at the risk of lost data in the event of a failure. Various strategies are available for flushing the data and closing the file. Refer to the reference documentation for more information. FAIL: If the target file exists, a MessageHandlingException is thrown. IGNORE: If the target file exists, the message payload is silently ignored. REPLACE: This is the default behavior when writing files. If the target file already exists, it will be overwritten. REPLACE_IF_MODIFIED: If the local file already exists, it will be overwritten only if the last modified timestamp does not match the source timestamp. Only applies to local files.","required":false,"restriction":{"type":"enum","values":["REPLACE","REPLACE_IF_MODIFIED","APPEND","APPEND_NO_FLUSH","FAIL","IGNORE"]}},{"name":"id","type":"string","required":false},{"name":"temporary-remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the temporary directory path to where files will be transferred before they are moved to the remote-directory (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/temp/myTransfers\u0027\");","required":false},{"name":"remote-filename-generator-expression","type":"string","description":"Allows you to provide SpEL expression which will compute file name of the remote file (e.g., assuming payload is java.io.File \"payload.getName() + \u0027.transferred\u0027\");","required":false},{"name":"chmod","type":"string","description":"Change the mode of the file (or remote file) after writing. Integer value expressed in Octal, e.g. \u0027644\u0027.","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when downloading files. We change it right after we know it\u0027s downloaded.","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with an [org.apache.commons.net.ftp.FTPFile] generic type parameter.","required":true},{"name":"use-temporary-file-name","type":"string","description":"Allows you to suppress using a temporary file name while writing the file.","default":"true","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"channel","type":"string","description":"Identifies channel attached to this adapter. This channel could be the receiving channel.","required":false},{"name":"order","type":"string","description":"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, or when a failure in the delivery to one subscriber should signal that the message should not be sent to subscribers with a higher \u0027order\u0027 attribute. It has no effect when this endpoint itself is a Polling Consumer for a channel with a queue.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"charset","type":"string","description":"Allows you to specify Charset (e.g., US-ASCII, ISO-8859-1, UTF-8). [UTF-8] is default - used when converting String payloads to bytes.","default":"UTF-8","required":false},{"name":"temporary-remote-directory","type":"string","description":"Identifies the remote temporary directory path (e.g., \"/remote/temp/mytransfers\")","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"source","name":"inbound-streaming-channel-adapter","description":"Configures a \u0027SourcePollingChannelAdapter\u0027 Endpoint for the \u0027org.springframework.integration.ftp.inbound.FtpInboundStreamingMessageSource\u0027.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"channel","type":"string","description":"Identifies channel attached to this adapter. The channel to which messages will be sent by this adapter.","required":false},{"name":"comparator","type":"string","description":"Specify a Comparator to be used when ordering Files. If none is provided, the order in which files are processed is the order they are received from the FTP server. The generic type of the Comparator must be \u0027FtpFileInfo\u0027.","required":false},{"name":"id","type":"string","required":false},{"name":"filename-pattern","type":"string","description":"Allows you to provide a file name pattern to determine the file names that need to be scanned. This is based on simple pattern matching (e.g., \"*.txt, fo*.txt\" etc.)","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with an [org.apache.commons.net.ftp.FTPFile] generic type parameter.","required":true},{"name":"filter","type":"string","description":"Allows you to specify a reference to a [org.springframework.integration.file.filters.FileListFilter] bean. This filter is applied to files on the remote server and only files that pass the filter are retrieved.","required":false},{"name":"max-fetch-size","type":"string","description":"When fetching objects from some external resource, limit the number of such objects that will be retrieved on each fetch. A negative value (default) indicates no limit; a value of zero effectively disables fetching remote objects.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"filename-regex","type":"string","description":"Allows you to provide a Regular Expression to determine the file names that need to be scanned. (e.g., \"f[o]+\\.txt\" etc.)","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}}],"groovy":[{"role":"endpoint","connectionType":"passthru","name":"control-bus","description":"Control bus (\u0027org.springframework.integration.groovy.config.GroovyControlBusFactoryBean\u0027) that accepts messages in the form of Groovy scripts. The scripts should be provided as String payload in incoming messages. The variable bindings will include any @ManagedResource, Lifecycle, or CustomizableThreadCreator instances from within the ApplicationContext.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"customizer","type":"string","description":"Reference to a GroovyObjectCustomizer bean to be applied to each script payload.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"script","description":"Configures an inner bean (\u0027org.springframework.integration.groovy.GroovyScriptExecutingMessageProcessor\u0027) that will generate a Groovy Script.","attributes":[{"name":"compile-static","type":"boolean","description":"Indicates if the target Groovy script should be compiled statically. The @CompileStatic hint is applied for the Groovy compiler. This attribute is ignored if the \u0027compiler-configuration\u0027 reference is specified.","default":"false","required":false},{"name":"customizer","type":"string","description":"Reference to a GroovyObjectCustomizer bean to be applied to this script.","required":false},{"name":"refresh-check-delay","type":"string","description":"Refresh delay for the script contents if specified as a resource location (defaults to -1, never refresh).","required":false},{"name":"variables","type":"string","description":"Comma-delimited pairs of variables and their values. the variable name can applies \u0027-ref\u0027 suffix, which mean to determine a variable value as a bean reference. This attribute isn\u0027t mutually exclusive with \u0027variable\u0027 sub-elements and all variables will be merged to one Map. This attribute is mutually exclusive with \u0027script-variable-generator\u0027 attribute.","required":false},{"name":"location","type":"string","description":"Resource location path for the Script. Either this or an inline script as body text should be provided, but not both.","required":false},{"name":"script-variable-generator","type":"string","description":"Reference to the ScriptVariableGenerator bean. This attribute is mutually exclusive with any \u0027variable\u0027 sub-elements and \u0027variables\u0027 attribute.","required":false},{"name":"compiler-configuration","type":"string","description":"Reference to a CompilerConfiguration bean to be applied to the underlying GroovyClassLoader for this script compilation.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"variable","description":"Allows you to define custom script variable bindings. The use of this sub-element is mutually exclusive with the \u0027script-variable-generator\u0027 attribute.","attributes":[{"name":"value","type":"string","description":"Value of the script variable as a literal.","required":false},{"name":"ref","type":"string","description":"Value of the script variable as a bean reference.","required":false},{"name":"name","type":"string","description":"Name of the script variable.","required":false}]}]}}],"http":[{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler\u0027 with \u0027expectReply \u003d false\u0027 that sends HTTP requests based on incoming messages.","attributes":[{"name":"header-mapper","type":"string","description":"Specify a reference to org.springframework.integration.mapping.HeaderMapper implementation bean. Only one of \u0027header-mapper\u0027 or \u0027mapped-request-headers\u0027 attributes can be provided.","required":false},{"name":"channel","type":"string","description":"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).","required":false},{"name":"encode-uri","type":"string","description":"When set to \"false\", the real URI won\u0027t be encoded before the request is sent. This may be useful in some scenarios as it allows user control over the encoding, if needed, for example by using the \"url-expression\". Default is \"true\".","default":"true","required":false},{"name":"extract-payload","type":"string","description":"Specify whether the outbound message\u0027s payload should be extracted when preparing the request body. Otherwise the Message instance itself will be serialized. The default value is \u0027true\u0027.","default":"true","required":false},{"name":"uri-variables-expression","type":"string","description":"Specifies the SpEL expression to be evaluate as a Map for URI variable placeholders within \u0027url\u0027. This attribute is mutually exclusive with \u0027uri-variable\u0027 sub-elements.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"message-converters","type":"string","description":"Provide a reference to a list of HttpMessageConverter instances. If specified, these converters will replace all of the default converters that would normally be present on the underlying RestTemplate.","required":false},{"name":"http-method","type":"string","description":"The HTTP method to use when executing requests with this adapter Default is POST. This attribute cannot be provided if http-method-expression has a value.","required":false,"restriction":{"type":"enum","values":["GET","POST","HEAD","OPTIONS","PUT","DELETE","TRACE"]}},{"name":"rest-template","type":"string","description":"The reference to org.springframework.web.client.RestTemplate bean to send the HTTP Request.","required":false},{"name":"expected-response-type","type":"string","description":"The expected type to which the response body should be converted. Default is \u0027org.springframework.http.ResponseEntity\u0027. This attribute cannot be provided if expected-response-type-expression has a value","required":false},{"name":"id","type":"string","required":false},{"name":"mapped-request-headers","type":"string","description":"Comma-separated list of names of MessageHeaders to be mapped into the HttpHeaders of the HTTP request. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\"). The String \"HTTP_REQUEST_HEADERS\" will match against any of the standard HTTP Request headers.","required":false},{"name":"error-handler","type":"string","description":"Reference to a ResponseErrorHandler to be used by the underlying RestTemplate.","required":false},{"name":"trusted-spel","type":"boolean","description":"Set to \u0027true\u0027 if you trust SpEL expressions that might be evaluated to generate URI variables. The default value is \u0027false\u0027.","required":false},{"name":"url","type":"string","description":" URL to which the requests should be sent. It may include {placeholders} for evaluation against uri-variables.","required":false},{"name":"request-factory","type":"string","description":"Reference to a ClientHttpRequestFactory to be used by the underlying RestTemplate.","required":false},{"name":"http-method-expression","type":"string","description":"The SpEL expression to determine HTTP method, use when executing requests with this adapter, dynamically. This attribute cannot be provided if http-method has a value.","required":false},{"name":"charset","type":"string","description":"Specify the charset name to use for converting String-typed payloads to bytes. The default is \u0027UTF-8\u0027","required":false},{"name":"expected-response-type-expression","type":"string","description":"SpEL expression to determine the type for the expected response to which the response body should be converted The returned value of the expression could be an instance of java.lang.Class or java.lang.String representing a fully qualified class name. This attribute cannot be provided if expected-response-type has a value","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this adapter is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"url-expression","type":"string","description":" SpEL Expression resolving to a URL to which the requests should be sent. The resolved value may include {placeholders} for further evaluation against uri-variables.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0,"max":-1},"name":"uri-variable","description":"Specify an expression for URI variable placeholder within \u0027url\u0027. This element is mutually exclusive with \u0027uri-variables-expression\u0027 attribute.","attributes":[{"name":"expression","type":"string","description":"Expression to be evaluated to determine the replacement value. The Message is the root object of the expression, therefore the \u0027payload\u0027 and \u0027headers\u0027 are available directly. Any bean may be resolved if the bean name is preceded with \u0027@\u0027.","required":true},{"name":"name","type":"string","description":"Name of the placeholder to be replaced.","required":true}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}},{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"request_reply","name":"inbound-gateway","description":"Configures a Messaging Gateway Endpoint for the \u0027org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport\u0027 that receives HTTP requests and produces responses.","attributes":[{"name":"reply-timeout-status-code-expression","type":"string","description":"A SpEL expression that resolves to an \u0027HttpStatus\u0027 code when rendering a response after a \u0027reply-timeout\u0027. The expression must return an object which can be converted to a \u0027org.springframework.http.HttpStatus\u0027 enum value. The \u0027evaluationContext\u0027 has a \u0027BeanResolver\u0027 but no variables, so the usage of this attribute is somewhat limited. An example might be to resolve, at runtime, some scoped Bean that returns an \u0027HttpStatus\u0027 value, or use a literal expression e.g. \"504\". By default \u0027status-code-expression\u0027 is null, meaning that the default \u0027500 Internal Server Error\u0027 response status will be returned after a timeout. When a timeout is not encountered, the \u0027http:inbound-gateway\u0027 resolves the \u0027status code\u0027 from the \u0027http_statusCode\u0027 header of the reply Message.","required":false},{"name":"header-mapper","type":"string","description":"Specifies a reference to org.springframework.integration.mapping.HeaderMapper implementation bean. Only one of \u0027header-mapper\u0027 or \u0027mapped-request-headers\u0027 attributes can be provided.","required":false},{"name":"mapped-response-headers","type":"string","description":"Comma-separated list of names of MessageHeaders to be mapped into the HttpHeaders of the HTTP response. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\"). The String \"HTTP_RESPONSE_HEADERS\" will match against any of the standard HTTP Response headers.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"view-expression","type":"string","description":"SpEL expression that resolves to a view to be resolved when rendering a response. The expression can resolve to a view name or View object. In the case of \u0027inbound-gateway\u0027 the root object of the evaluation context is the reply message. In the case of \u0027inbound-channel-adapter\u0027 the \u0027evaluationContext\u0027 for this expression is rather lightweight, because there is no reply message, it has a \u0027BeanResolver\u0027 but no variables, so the usage of this attribute is somewhat limited. An example might be to resolve, at runtime, some scoped Bean that returns a view name or View object. This attribute is not allowed if there is a \u0027view-name\u0027 attribute.","required":false},{"name":"validator","type":"string","description":"A \u0027Validator\u0027 bean reference to validate a payload converted from the HTTP request.","required":false},{"name":"request-timeout","type":"string","description":"Used to set the sendTimeout on the underlying MessagingTemplate instance (org.springframework.integration.core.MessagingTemplate) for sending messages to the request channel. If not specified this property will default to \"1000\" (1 second).","required":false},{"name":"id","type":"string","required":false},{"name":"errors-key","type":"string","description":"In the case that a view-name is specified this attribute can be used to override the default key of the Errors (if the request cannot be handled). Defaults to \"errors\" (similar to normal MVC usage).","required":false},{"name":"extract-reply-payload","type":"string","description":"Specify whether only the reply Message\u0027s payload should be passed in the response. If this is set to \u0027false\u0027, the entire Message will be used to generate the response. The default is \u0027true\u0027.","default":"true","required":false},{"name":"request-payload-type","type":"string","description":"Target type for payload that is the conversion result of the request.","required":false},{"name":"reply-timeout","type":"string","description":"Used to set the receiveTimeout on the underlying MessagingTemplate instance (org.springframework.integration.core.MessagingTemplate) for receiving messages from the reply channel. If not specified this property will default to \"1000\" (1 second).","required":false},{"name":"reply-channel","type":"string","description":"Identifies the channel to which this gateway will subscribe, to receive(send) reply Messages.","required":false},{"name":"supported-methods","type":"string","description":"Comma-separated HTTP Method names. Determines which types of Request are allowed with this Endpoint.","required":false,"restriction":{"type":"enum","values":["GET","POST","HEAD","OPTIONS","PUT","DELETE","TRACE"]}},{"name":"error-code","type":"string","description":"In the case that a view-name is specified this attribute can be used to override the default error code under which the handling exception is exposed. Defaults to \"spring.integration.http.handler.error\" and is supplied with 3 parameters: the exception itself, its message and its stack trace as a String.","required":false},{"name":"convert-exceptions","type":"string","description":"In the case that a view-name is not specified this attribute can be used to override the default behaviour when there is a message handling exception (which is to rethrow). If this flag is true then the normal conversion process will be applied to the exception and written out to the response body.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"error-channel","type":"string","description":"The MessagingGateway\u0027s \u0027error-channel\u0027 where to send an ErrorMessage in case of Exception is caused from original message flow.","required":false},{"name":"message-converters","type":"string","description":"List of HttpMessageConverters for this Channel Adapter.","required":false},{"name":"path","type":"string","description":"Comma-separated URI paths (e.g., /orderId/{order}). Ant-style path patterns are also supported (e.g. /myPath/*.do).","required":false},{"name":"reply-key","type":"string","description":"In the case that a view-name is specified this attribute can be used to override the default key of the MVC Controller\u0027s ModelAndView attribute to keep a reply from underlying message flow. Default is \u0027reply\u0027.","required":false},{"name":"payload-expression","type":"string","description":"Allows you to specify SpEL expression to construct a Message payload","required":false},{"name":"view-name","type":"string","description":"View name to be resolved when rendering a response.","required":false},{"name":"mapped-request-headers","type":"string","description":"Comma-separated list of names of HttpHeaders to be mapped from the HTTP request into the MessageHeaders. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\"). The String \"HTTP_REQUEST_HEADERS\" will match against any of the standard HTTP Request headers.","required":false},{"name":"merge-with-default-converters","type":"boolean","description":"Flag to indicate if the default converters should be registered after any custom converters. This flag is used only if message-converters are provided, otherwise all default converters will be registered. Defaults to \"false\"","default":"false","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"request-channel","type":"string","description":"The receiving Message Channel of this endpoint.","required":true}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"request-mapping","description":"Defines configuration for org.springframework.integration.http.inbound.RequestMapping as RESTFul attributes for Spring Integration HTTP Inbound Endpoints.","attributes":[{"name":"produces","type":"string","description":"The producible media types of the mapped request, narrowing the primary mapping. The format is a sequence of media types (\"text/plain\", \"application/*), with a request only mapped if the Accept matches one of these media types. Expressions can be negated by using the \"!\" operator, as in \"!text/plain\", which matches all requests with a Accept other than \"text/plain\".","required":false},{"name":"headers","type":"string","description":"The headers of the mapped request, narrowing the primary mapping. A sequence of \"My-Header\u003dmyValue\" style expressions, with a request only mapped if each such header is found to have the given value. Expressions can be negated by using the \"!\u003d\" operator, as in \"My-Header!\u003dmyValue\". \"My-Header\" style expressions are also supported, with such headers having to be present in the request (allowed to have any value). \"!My-Header\" style expressions indicate that the specified header is not supposed to be present in the request. Also supports media type wildcards (*), for headers such as Accept and Content-Type. For instance, headers \u003d \"content-type\u003dtext/*\" will match requests with a Content-Type of \"text/html\", \"text/plain\", etc.","required":false},{"name":"params","type":"string","description":"The parameters of the mapped request, narrowing the primary mapping. A sequence of \"myParam\u003dmyValue\" style expressions, with a request only mapped if each such parameter is found to have the given value. Expressions can be negated by using the \"!\u003d\" operator, as in \"myParam!\u003dmyValue\". \"myParam\" style expressions are also supported, with such parameters having to be present in the request (allowed to have any value). \"!myParam\" style expressions indicate that the specified parameter is not supposed to be present in the request.","required":false},{"name":"consumes","type":"string","description":"The consumable media types of the mapped request, narrowing the primary mapping. The format is a sequence of media types (\"text/plain\", \"application/*), with a request only mapped if the Content-Type matches one of these media types. Expressions can be negated by using the \"!\" operator, as in \"!text/plain\", which matches all requests with a Content-Type other than \"text/plain\".","required":false}]},{"occurrence":{"min":0},"name":"cross-origin","description":"Marks this endpoint as permitting cross origin requests (CORS).","attributes":[{"name":"exposed-headers","type":"string","description":"List of response headers that the user-agent will allow the client to access. This property controls the value of actual response\u0027s \u0027Access-Control-Expose-Headers\u0027 header.","required":false},{"name":"max-age","type":"number","description":"Controls the cache duration for pre-flight responses. Setting this to a reasonable value can reduce the number of pre-flight request/response interaction required by the browser. This property controls the value of the \u0027Access-Control-Max-Age\u0027 header in the pre-flight response. Value set to \u0027-1\u0027 means undefined. Default value is 1800 seconds, or 30 minutes.","default":"1800","required":false},{"name":"method","type":"string","description":"The HTTP request methods to allow: GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE. Methods specified here overrides \u0027supported-methods\u0027 ones.","required":false,"restriction":{"type":"enum","values":["GET","POST","HEAD","OPTIONS","PUT","DELETE","TRACE"]}},{"name":"allowed-headers","type":"string","description":"Indicates which request headers can be used during the actual request. \"*\" means that all headers asked by the client are allowed. This property controls the value of pre-flight response\u0027s \u0027Access-Control-Allow-Headers\u0027 header. Default value is \"*\".","default":"*","required":false},{"name":"allow-credentials","type":"boolean","description":"Set to \"true\" if the the browser should include any cookies associated to the domain of the request being annotated, or \"false\" if it should not. Empty string \"\" means undefined. If true, the pre-flight response will include the header \u0027Access-Control-Allow-Credentials\u003dtrue\u0027. Default value is \"true\".","default":"true","required":false},{"name":"origin","type":"string","description":"List of allowed origins. \"*\" means that all origins are allowed. These values are placed in the \u0027Access-Control-Allow-Origin\u0027 header of both the pre-flight and actual responses. Default value is \"*\".","default":"*","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"header","description":"Specifies a Message header as a result of expression evaluation against ServletRequest and URI Variables.","attributes":[{"name":"expression","type":"string","description":"Expression to be evaluated to determine the value of the header.","required":true},{"name":"name","type":"string","description":"Name of the Message Header","required":true}]}]}},{"role":"endpoint","connectionType":"passthru","name":"graph-controller","description":"Configures a \u0027org.springframework.integration.http.management.IntegrationGraphController\u0027 bean to expose a REST API for the \u0027org.springframework.integration.support.management.graph.IntegrationGraphServer\u0027 bean. Note: Spring Web MVC must be present in the application to enable and register this component.","attributes":[{"name":"path","type":"string","description":"The root request mapping path for the \u0027IntegrationGraphController\u0027. Defaults to /integration.","default":"/integration","required":false}]},{"role":"endpoint","connectionType":"source","name":"inbound-channel-adapter","description":"Configures a Message Producing Endpoint for the \u0027org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport\u0027 that receives HTTP requests and doesn\u0027t produce responses.","attributes":[{"name":"send-timeout","type":"string","description":"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.","required":false},{"name":"channel","type":"string","description":"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).","required":false},{"name":"path","type":"string","description":"Comma-separated URI paths (e.g., /orderId/{order}). Ant-style path patterns are also supported (e.g. /myPath/*.do).","required":false},{"name":"payload-expression","type":"string","description":"Allows you to specify SpEL expression to construct a Message payload","required":false},{"name":"header-mapper","type":"string","description":"Specifies a reference to org.springframework.integration.mapping.HeaderMapper implementation bean. Only one of \u0027header-mapper\u0027 or \u0027mapped-request-headers\u0027 attributes can be provided.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"view-expression","type":"string","description":"SpEL expression that resolves to a view to be resolved when rendering a response. The expression can resolve to a view name or View object. In the case of \u0027inbound-gateway\u0027 the root object of the evaluation context is the reply message. In the case of \u0027inbound-channel-adapter\u0027 the \u0027evaluationContext\u0027 for this expression is rather lightweight, because there is no reply message, it has a \u0027BeanResolver\u0027 but no variables, so the usage of this attribute is somewhat limited. An example might be to resolve, at runtime, some scoped Bean that returns a view name or View object. This attribute is not allowed if there is a \u0027view-name\u0027 attribute.","required":false},{"name":"validator","type":"string","description":"A \u0027Validator\u0027 bean reference to validate a payload converted from the HTTP request.","required":false},{"name":"status-code-expression","type":"string","description":"A SpEL expression that resolves to an \u0027HttpStatus\u0027 code when rendering a response. The expression must return an object which can be converted to a \u0027org.springframework.http.HttpStatus\u0027 enum value. The \u0027evaluationContext\u0027 has a \u0027BeanResolver\u0027 but no variables, so the usage of this attribute is somewhat limited. An example might be to resolve, at runtime, some scoped Bean that returns an \u0027HttpStatus\u0027 value, or use a literal expression e.g. \"201\". By default \u0027status-code-expression\u0027 is null, meaning that the default \u0027200 OK\u0027 response status will be returned. The \u0027http:inbound-gateway\u0027 resolves the \u0027status code\u0027 from the \u0027http_statusCode\u0027 header of the reply Message.","required":false},{"name":"view-name","type":"string","description":"View name to be resolved when rendering a response.","required":false},{"name":"id","type":"string","required":false},{"name":"errors-key","type":"string","description":"In the case that a view-name is specified this attribute can be used to override the default key of the Errors (if the request cannot be handled). Defaults to \"errors\" (similar to normal MVC usage).","required":false},{"name":"mapped-request-headers","type":"string","description":"Comma-separated list of names of HttpHeaders to be mapped from the HTTP request into the MessageHeaders. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\"). The String \"HTTP_REQUEST_HEADERS\" will match against any of the standard HTTP Request headers.","required":false},{"name":"request-payload-type","type":"string","description":"Target type for payload that is the conversion result of the request.","required":false},{"name":"merge-with-default-converters","type":"boolean","description":"Flag to indicate if the default converters should be registered after any custom converters. This flag is used only if message-converters are provided, otherwise all default converters will be registered. Defaults to \"false\"","default":"false","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"error-code","type":"string","description":"In the case that a view-name is specified this attribute can be used to override the default error code under which the handling exception is exposed. Defaults to \"spring.integration.http.handler.error\" and is supplied with 3 parameters: the exception itself, its message and its stack trace as a String.","required":false},{"name":"supported-methods","type":"string","description":"Comma-separated HTTP Method names. Determines which types of Request are allowed with this Endpoint.","required":false,"restriction":{"type":"enum","values":["GET","POST","HEAD","OPTIONS","PUT","DELETE","TRACE"]}},{"name":"error-channel","type":"string","description":"The MessagingGateway\u0027s \u0027error-channel\u0027 where to send an ErrorMessage in case of Exception is caused from original message flow.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"message-converters","type":"string","description":"List of HttpMessageConverters for this Channel Adapter.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"request-mapping","description":"Defines configuration for org.springframework.integration.http.inbound.RequestMapping as RESTFul attributes for Spring Integration HTTP Inbound Endpoints.","attributes":[{"name":"headers","type":"string","description":"The headers of the mapped request, narrowing the primary mapping. A sequence of \"My-Header\u003dmyValue\" style expressions, with a request only mapped if each such header is found to have the given value. Expressions can be negated by using the \"!\u003d\" operator, as in \"My-Header!\u003dmyValue\". \"My-Header\" style expressions are also supported, with such headers having to be present in the request (allowed to have any value). \"!My-Header\" style expressions indicate that the specified header is not supposed to be present in the request. Also supports media type wildcards (*), for headers such as Accept and Content-Type. For instance, headers \u003d \"content-type\u003dtext/*\" will match requests with a Content-Type of \"text/html\", \"text/plain\", etc.","required":false},{"name":"params","type":"string","description":"The parameters of the mapped request, narrowing the primary mapping. A sequence of \"myParam\u003dmyValue\" style expressions, with a request only mapped if each such parameter is found to have the given value. Expressions can be negated by using the \"!\u003d\" operator, as in \"myParam!\u003dmyValue\". \"myParam\" style expressions are also supported, with such parameters having to be present in the request (allowed to have any value). \"!myParam\" style expressions indicate that the specified parameter is not supposed to be present in the request.","required":false},{"name":"consumes","type":"string","description":"The consumable media types of the mapped request, narrowing the primary mapping. The format is a sequence of media types (\"text/plain\", \"application/*), with a request only mapped if the Content-Type matches one of these media types. Expressions can be negated by using the \"!\" operator, as in \"!text/plain\", which matches all requests with a Content-Type other than \"text/plain\".","required":false}]},{"occurrence":{"min":0},"name":"cross-origin","description":"Marks this endpoint as permitting cross origin requests (CORS).","attributes":[{"name":"exposed-headers","type":"string","description":"List of response headers that the user-agent will allow the client to access. This property controls the value of actual response\u0027s \u0027Access-Control-Expose-Headers\u0027 header.","required":false},{"name":"max-age","type":"number","description":"Controls the cache duration for pre-flight responses. Setting this to a reasonable value can reduce the number of pre-flight request/response interaction required by the browser. This property controls the value of the \u0027Access-Control-Max-Age\u0027 header in the pre-flight response. Value set to \u0027-1\u0027 means undefined. Default value is 1800 seconds, or 30 minutes.","default":"1800","required":false},{"name":"method","type":"string","description":"The HTTP request methods to allow: GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE. Methods specified here overrides \u0027supported-methods\u0027 ones.","required":false,"restriction":{"type":"enum","values":["GET","POST","HEAD","OPTIONS","PUT","DELETE","TRACE"]}},{"name":"allowed-headers","type":"string","description":"Indicates which request headers can be used during the actual request. \"*\" means that all headers asked by the client are allowed. This property controls the value of pre-flight response\u0027s \u0027Access-Control-Allow-Headers\u0027 header. Default value is \"*\".","default":"*","required":false},{"name":"allow-credentials","type":"boolean","description":"Set to \"true\" if the the browser should include any cookies associated to the domain of the request being annotated, or \"false\" if it should not. Empty string \"\" means undefined. If true, the pre-flight response will include the header \u0027Access-Control-Allow-Credentials\u003dtrue\u0027. Default value is \"true\".","default":"true","required":false},{"name":"origin","type":"string","description":"List of allowed origins. \"*\" means that all origins are allowed. These values are placed in the \u0027Access-Control-Allow-Origin\u0027 header of both the pre-flight and actual responses. Default value is \"*\".","default":"*","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"header","description":"Specifies a Message header as a result of expression evaluation against ServletRequest and URI Variables.","attributes":[{"name":"expression","type":"string","description":"Expression to be evaluated to determine the value of the header.","required":true},{"name":"name","type":"string","description":"Name of the Message Header","required":true}]}]}},{"role":"endpoint","connectionType":"request_reply","name":"outbound-gateway","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler\u0027 that sends HTTP requests based on incoming messages and expects HTTP responses.","attributes":[{"name":"encode-uri","type":"string","description":"When set to \"false\", the real URI won\u0027t be encoded before the request is sent. This may be useful in some scenarios as it allows user control over the encoding, if needed, for example by using the \"url-expression\". Default is \"true\".","default":"true","required":false},{"name":"message-converters","type":"string","description":"Provide a reference to a list of HttpMessageConverter instances. If specified, these converters will replace all of the default converters that would normally be present on the underlying RestTemplate.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"http-method","type":"string","description":"The HTTP method to use when executing requests with this adapter Default is POST. This attribute cannot be provided if http-method-expression has a value.","required":false,"restriction":{"type":"enum","values":["GET","POST","HEAD","OPTIONS","PUT","DELETE","TRACE"]}},{"name":"id","type":"string","required":false},{"name":"mapped-request-headers","type":"string","description":"Comma-separated list of names of MessageHeaders to be mapped into the HttpHeaders of the HTTP request. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\"). The String \"HTTP_REQUEST_HEADERS\" will match against any of the standard HTTP Request headers.","required":false},{"name":"error-handler","type":"string","description":"Reference to a ResponseErrorHandler to be used by the underlying RestTemplate.","required":false},{"name":"charset","type":"string","description":"Specify the charset name to use for converting String-typed payloads to bytes. The default is \u0027UTF-8\u0027","required":false},{"name":"reply-channel","type":"string","description":"Identifies the channel to which this gateway will subscribe, to receive(send) reply Messages.","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this adapter is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"url-expression","type":"string","description":" SpEL Expression resolving to a URL to which the requests should be sent. The resolved value may include {placeholders} for further evaluation against uri-variables.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"header-mapper","type":"string","description":"Specify a reference to org.springframework.integration.mapping.HeaderMapper implementation bean. Only one of \u0027header-mapper\u0027 or \u0027mapped-request-headers\u0027 attributes can be provided.","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds.","required":false},{"name":"mapped-response-headers","type":"string","description":"Comma-separated list of names of HttpHeaders to be mapped from the HTTP response into the MessageHeaders. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\"). The String \"HTTP_RESPONSE_HEADERS\" will match against any of the standard HTTP Response headers.","required":false},{"name":"uri-variables-expression","type":"string","description":"Specifies the SpEL expression to be evaluate as a Map for URI variable placeholders within \u0027url\u0027. This attribute is mutually exclusive with \u0027uri-variable\u0027 sub-elements.","required":false},{"name":"rest-template","type":"string","description":"The reference to org.springframework.web.client.RestTemplate bean to send the HTTP Request.","required":false},{"name":"expected-response-type","type":"string","description":"The expected type to which the response body should be converted. Default is \u0027org.springframework.http.ResponseEntity\u0027. This attribute cannot be provided if expected-response-type-expression has a value","required":false},{"name":"trusted-spel","type":"boolean","description":"Set to \u0027true\u0027 if you trust SpEL expressions that might be evaluated to generate URI variables. The default value is \u0027false\u0027.","required":false},{"name":"url","type":"string","description":" URL to which the requests should be sent. It may include {placeholders} for evaluation against uri-variables.","required":false},{"name":"request-factory","type":"string","description":"Reference to a ClientHttpRequestFactory to be used by the underlying RestTemplate.","required":false},{"name":"http-method-expression","type":"string","description":"The SpEL expression to determine HTTP method, use when executing requests with this adapter, dynamically. This attribute cannot be provided if http-method has a value.","required":false},{"name":"transfer-cookies","type":"string","description":"When set to \"true\", if a response contains a \u0027Set-Cookie\u0027 header, it will be mapped to a \u0027Cookie\u0027 header. This enables simple cookie handling where subsequent HTTP interactions in the same message flow can use a cookie supplied by the server. Default is \"false\".","default":"false","required":false},{"name":"extract-request-payload","type":"string","description":"Specifies whether the outbound message\u0027s payload should be extracted when preparing the request body. Otherwise the Message instance itself will be serialized. The default value is \u0027true\u0027.","required":false},{"name":"expected-response-type-expression","type":"string","description":"SpEL expression to determine the type for the expected response to which the response body should be converted The returned value of the expression could be an instance of java.lang.Class or java.lang.String representing a fully qualified class name. This attribute cannot be provided if expected-response-type has a value","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"request-channel","type":"string","description":"The receiving Message Channel of this endpoint.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0,"max":-1},"name":"uri-variable","description":"Specify an expression for URI variable placeholder within \u0027url\u0027.","attributes":[{"name":"expression","type":"string","description":"Expression to be evaluated to determine the replacement value. The Message is the root object of the expression, therefore the \u0027payload\u0027 and \u0027headers\u0027 are available directly. Any bean may be resolved if the bean name is preceded with \u0027@\u0027.","required":true},{"name":"name","type":"string","description":"Name of the placeholder to be replaced.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}},{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}}],"integration":[{"role":"router","connectionType":"tee","name":"filter","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.filter.MessageFilter\u0027 that is used to decide whether a Message should be passed along or dropped based on some criteria","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"discard-channel","type":"string","description":"The channel where the filter will send the messages that were dropped","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"expression","type":"string","description":"A SpEL expression to be evaluated against the input Message as its root object.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"throw-exception-on-rejection","type":"boolean","description":"Throw an exception if the filter rejects the message (default false).","default":"false","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":2},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0,"max":2},"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","attributes":[{"name":"discard-within-advice","type":"string","description":"When true (default) any discard action (and exception thrown) will occur within the scope of the advice class(es) in the chain. Otherwise, these actions will occur after the advice chain returns.","default":"true","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"json-to-object-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.json.JsonToObjectTransformer\u0027 that converts a JSON String to an object.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"type","type":"string","description":"Fully qualified name of the java type to be created by this transformer (e.g. foo.bar.Foo)","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"object-mapper","type":"string","description":"Optional reference to a JsonObjectMapper instance. By default, a JsonObjectMapper that uses a Jackson 2 ObjectMapper.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"service-activator","description":"Defines an endpoint for the \u0027org.springframework.integration.handler.ServiceActivatingHandler\u0027 for exposing any bean reference as a service that receives request Messages from an \u0027input-channel\u0027 and may send reply Messages to an \u0027output-channel\u0027. The \u0027ref\u0027 may point to an instance that has either a single public method or a method with the @ServiceActivator annotation. Otherwise, the \u0027method\u0027 attribute should be provided along with \u0027ref\u0027.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"requires-reply","type":"boolean","description":"If set to \u0027true\u0027, a reply must return a non-null value. By setting \u0027requires-reply\u0027 to \u0027true\u0027, a \u0027ReplyRequiredException\u0027 will be raised for null reply messages. If \u0027requires-reply\u0027 is set to false, those messages are silently dropped. This attribute defaults to \u0027true\u0027 for \u0027transformer\u0027.","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"expression","type":"string","description":"A SpEL expression to be evaluated against the input Message as its root object.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"async","type":"string","description":"If the service method returns a ListenableFuture\u003c?\u003e and this flag is \u0027true\u0027, the calling thread is released immediately. The remaining flow will run on the thread that completes the future. If \u0027false\u0027 (default), the future will be sent as the payload of the result message. This has no effect with any other type of return.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"not-propagated-headers","type":"string","description":"Header patterns (\"xxx*\", \"*xxx\", \"*xxx*\" or \"xxx*yyy\") that will NOT be copied from the inbound message. \u0027*\u0027 means do not copy headers at all.","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"claim-check-in","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.ClaimCheckInTransformer\u0027 that stores a Message and returns a new Message, whose payload is the id of the stored Message.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"message-store","type":"string","description":"Reference to the MessageStore to be used by this Claim Check transformer. If not specified, the default reference will be to a bean named \u0027messageStore\u0027.","default":"messageStore","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"sequence","occurrence":{"min":0},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"management","attributes":[{"name":"stats-enabled-patterns","type":"string","description":"Comma separated list of simple patterns for component names for which message statistics will be enabled (response times, rates etc), as well as counts (a positive match here overrides `counts-enabled`, you can\u0027t have statistics without counts). (defaults to \u0027*\u0027). Only patterns that also match \u0027managed-components\u0027 will be considered. Enables statistics for those components that support statistics (channels - when sending, message handlers, etc). This is the initial setting only, individual components can have stats enabled/disabled at runtime. If a pattern starts with `!`, stats (and counts) are disabled for matches. Note: this means that \u0027!foo\u0027 here will disable stats and counts for \u0027foo\u0027 even if counts are enabled for \u0027foo\u0027 in \u0027counts-enabled\u0027. For components with names that match multiple patterns, the first pattern wins. Enabling stats at runtime also enables counts.","required":false},{"name":"default-counts-enabled","type":"string","description":"The default value for components that don\u0027t match \u0027counts-enabled-patterns\u0027. Defaults to false, or true when an Integration MBean Exporter is provided.","required":false},{"name":"metrics-factory","type":"string","description":"A MetricsFactory responsible for creating objects that maintain metrics for message channels and message handlers.","required":false},{"name":"default-stats-enabled","type":"string","description":"The default value for components that don\u0027t match \u0027stats-enabled-patterns\u0027. Defaults to false, or true when an Integration MBean Exporter is provided.","required":false},{"name":"counts-enabled-patterns","type":"string","description":"Comma separated list of simple patterns for component names for which message counts will be enabled (defaults to \u0027*\u0027). Only patterns that also match \u0027managed-components\u0027 will be considered. Enables message counting (`sendCount`, `errorCount`, `receiveCount`) for those components that support counters (channels, message handlers, etc). This is the initial setting only, individual components can have counts enabled/disabled at runtime. May be overridden by an entry in \u0027stats-enabled\u0027 which is additional functionality over simple counts. If a pattern starts with `!`, counts are disabled for matches. For components with names that match multiple patterns, the first pattern wins. Disabling counts at runtime also disables stats.","required":false},{"name":"default-logging-enabled","type":"string","description":"Set false, to disable all main-path debug logging for components that implement \u0027IntegrationManagement\u0027 (channels, message handlers etc). For high-volume environments avoiding calls to \u0027isDebuggingEnabled()` can improve performance.","required":false}]},{"role":"endpoint","connectionType":"passthru","name":"scatter-gather","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.scattergather.ScatterGatherHandler\u0027.","attributes":[{"name":"gather-timeout","type":"string","description":"Allows to specify how long the Scatter-Gather will wait for reply Messages for gathering. By default it will wait indefinitely. Value is specified in milliseconds.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"gather-channel","type":"string","description":"Identifies the channel to receive reply Messages for gathering.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"scatter-channel","type":"string","description":"Identifies the channel to send a message for \u0027auction\u0027 Scatter-Gather pattern variant. Mutually exclusive with \u0027scatterer\u0027 sub-element.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"requires-reply","type":"string","description":"Specify whether the Scatter-Gather must return a non-null value. This value is \u0027true\u0027 by default, hence a ReplyRequiredException will be thrown when the underlying aggregator returns a null value after \u0027gather-timeout\u0027. Note, if \u0027null\u0027 is a possibility, the \u0027gather-timeout\u0027 should be specified to avoid an indefinite wait.","default":"true","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027 - as a RecipientListRouter bean together with suffix \u0027.scatterer\u0027 - as a AggregatingMessageHandler bean together with suffix \u0027.gatherer\u0027","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":2},"name":"scatterer","attributes":[{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"recipient","description":"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.","attributes":[{"name":"selector-expression","type":"string","description":"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.","required":false},{"name":"channel","type":"string","description":"The channel (recepient) that the message will be send to. ","required":true}]}]}},{"occurrence":{"min":0,"max":2},"name":"gatherer","attributes":[{"name":"correlation-strategy","type":"string","description":"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.","required":false},{"name":"expire-groups-upon-timeout","type":"boolean","description":"Boolean flag specifying, if a group is completed due to timeout (reaper or \u0027group-timeout(-expression)\u0027), whether the group should be removed. When true, late arriving messages will form a new group. When false, they will be discarded. Default is \u0027true\u0027 for an aggregator and \u0027false\u0027 for a resequencer.","required":false},{"name":"group-timeout-expression","type":"string","description":"A SpEL expression to evaluate a \u0027group-timeout\u0027 with the MessageGroup as the #root evaluation context object for scheduling the MessageGroup forced completion, when the \u0027ReleaseStrategy\u0027 does not \u0027release\u0027 the group when the current Message arrives. If \u0027group-timeout-expression\u0027 evaluates to \u0027null\u0027 or less than \u00270\u0027, the MessageGroup won\u0027t be scheduled to be forced complete. The action taken when the group is forced complete depends on the \u0027send-partial-result-on-expiry\u0027 attribute. Mutually exclusive with the \u0027group-timeout\u0027 attribute.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"lock-registry","type":"string","description":"A reference to a \u0027org.springframework.integration.support.locks.LockRegistry\u0027 bean to obtain \u0027java.util.concurrent.locks.Lock\u0027 by \u0027groupId\u0027. Used for concurrent operations on MessageGroups. By default an internal \u0027DefaultLockRegistry\u0027 is used.","required":false},{"name":"message-store","type":"string","description":"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.","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"release-strategy-method","type":"string","description":"A method defined on the bean referenced by release-strategy, that implements the completion decision algorithm.","required":false},{"name":"group-timeout","type":"string","description":"A timeout in milliseconds to force the MessageGroup complete, when the \u0027ReleaseStrategy\u0027 does not \u0027release\u0027 the group when the current Message arrives. If \u0027group-timeout\u0027 is not provided or is less than \u00270\u0027 the MessageGroup won\u0027t be scheduled to be forced complete. The action taken when the group is forced complete depends on the \u0027send-partial-result-on-expiry\u0027 attribute. Mutually exclusive with the \u0027group-timeout-expression\u0027 attribute.","required":false},{"name":"release-lock-before-send","type":"boolean","description":"Set to true to release the message group lock before sending any output. See \"Avoiding Deadlocks\" in the Aggregator section of the reference manual for more information as to why this might be needed.","required":false},{"name":"headers-function","type":"string","description":"A reference to the \u0027Function\u0027 for merging and computing message headers for reply based on the \u0027MessageGroup\u0027 to release.","required":false},{"name":"expire-groups-upon-completion","type":"boolean","description":"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 \u0027false\u0027","default":"false","required":false},{"name":"send-partial-result-on-expiry","type":"string","description":"Specifies whether messages that expired should be aggregated and sent to the \u0027output-channel\u0027 or \u0027replyChannel\u0027. 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.expireMessageGroups(timeout). That could be accomplished via a ControlBus operation or by simply invoking that method if you have a reference to the MessageGroupStore instance.","required":false},{"name":"correlation-strategy-expression","type":"string","description":"A SpEL expression which implements correlation decision algorithm to apply to the Message (e.g., payload.getPerson().getId() - correlate based on the \u0027id\u0027 of the \u0027person\u0027 attribute of the message payload object)","required":false},{"name":"discard-channel","type":"string","description":"The channel where the aggregator will send the messages that timed out (if send-partial-results- on-expiry is \u0027false\u0027).","required":false},{"name":"release-strategy","type":"string","description":"A reference to a bean that implements the release strategy. The bean can be an implementation of the ReleaseStrategy interface or a POJO","required":false},{"name":"release-strategy-expression","type":"string","description":"A SpEL expression to evaluate against a root object that is the Collection of messages within the message group (e.g, size() \u003e 6)","required":false},{"name":"empty-group-min-timeout","type":"string","description":"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. If this is set, the group is scheduled for removal after normal or partial sequences group release. When a MessageGroupStoreReaper is configured to expire partial groups, empty groups are also removed, but using this value. Note that the actual time to expire an empty group will also be affected by the reaper\u0027s \u0027timeout\u0027 property and it could be as much as this value plus the timeout.","required":false},{"name":"scheduler","type":"string","description":"Provide a reference to the TaskScheduler instance to schedule \u0027forceComplete\u0027 on the MessageGroup when no new message arrives for the MessageGroup within the \u0027group-timeout\u0027 or \u0027group-timeout-expression\u0027. If it isn\u0027t provided, the default scheduler \u0027taskScheduler\u0027, registered in the ApplicationContext {ThreadPoolTaskScheduler} will be used. This attribute only applies if \u0027group-timeout\u0027 or \u0027group-timeout-expression\u0027 is specified.","required":false},{"name":"pop-sequence","type":"boolean","description":"Boolean flag specifying, if the \u0027MessageBuilder.popSequenceDetails()\u0027 should be called for the output message. Plays the opposite role to the \u0027AbstractMessageSplitter.setApplySequence()\u0027. Defaults to \u0027true\u0027.","default":"true","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false},{"name":"expression","type":"string","description":"A SpEL expression to be evaluated against the input message list as its root object.","required":false},{"name":"correlation-strategy-method","type":"string","description":"A method defined on the bean referenced by correlation-strategy, that implements the correlation decision algorithm","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":2},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expire-transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"expire-advice-chain","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"request_reply","name":"gateway","description":"Defines a Messaging Gateway - \u0027org.springframework.integration.gateway.GatewayProxyFactoryBean\u0027.","attributes":[{"name":"default-payload-expression","type":"string","description":" An expression that will be used to generate the payload for all methods in the service interface unless explicitly overridden by a method declaration. Variables include #args, #gatewayMethod; a bean resolver is also available, enabling expressions like \"@someBean(#args)\". ","required":false},{"name":"default-request-timeout","type":"string","description":" Provides the amount of time dispatcher would wait to send a message. This timeout would only apply if there is a potential to block in the send call. For example if this gateway is hooked up to a Queue channel. Value is specified in milliseconds; it can be a simple long value or a SpEL expression; array variable #args is available. ","required":false},{"name":"async-executor","type":"string","description":" Provide a reference to an implementation of java.util.concurrent.Executor to use for any of the interface methods that have a Future or ListenableFuture return type. This Executor will only be used for those async methods; the sync methods will be invoked on the caller\u0027s thread. By default, a SimpleAsyncTaskExecutor is used. Most executors return a FutureTask or FutureListenableTask respectively but a custom executor can return any Future. If the method return type is not compatible with the executor the flow will run on the caller\u0027s thread and the flow must return an appropriate Future. Finally, you can disable the gateway async handling by setting this attribute to \"\". This allows the downstream flow to return a Future that would otherwise have been compatible with the default executor. ","required":false},{"name":"default-reply-timeout","type":"string","description":" Allows you to specify how long this gateway will wait for the reply message before returning. By default it will wait indefinitely. \u0027null\u0027 is returned if the gateway times out. Value is specified in milliseconds; it can be a simple long value or a SpEL expression; array variable #args is available. Also used for receive-only operations as the receive timeout. ","required":false},{"name":"service-interface","type":"string","description":" The name of the interface which will be exposed by this gateway. ","required":false},{"name":"mapper","type":"string","description":" An MethodArgsMessageMapper to map the method arguments to a Message. When this is provided, no payload-expressions or headers are allowed; the custom mapper is responsible for creating the message. ","required":false},{"name":"id","type":"string","required":false},{"name":"default-reply-channel","type":"string","description":" Identifies default channel this gateway will subscribe to to receive reply Messages, which will then be converted to the return type of the method signature. ","required":false},{"name":"error-channel","type":"string","description":"Identifies a channel that error messages will be sent to if a failure occurs in this gateway\u0027s invocation. If no \"error-channel\" reference is provided, this gateway will propagate Exceptions to the caller. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"default-request-channel","type":"string","description":" Identifies default channel the messages will be sent to upon invocation of methods of this gateway ","required":false}],"childGroup":{"indicator":"sequence","occurrence":{"min":0},"children":[{"occurrence":{"min":0,"max":-1},"name":"default-header","description":" Provides a mechanism to enrich the message with custom message headers. These default headers are created for all methods on the service-interface (unless overridden by a specific method element). ","attributes":[{"name":"name","type":"string","description":"The name of the header","required":true},{"name":"expression","type":"string","description":"Expression to be evaluated to produce a value for the header. Either this or \u0027value\u0027 must be provided.","required":false},{"name":"value","type":"string","description":"The value of the header. Either this or \u0027expression\u0027 must be provided.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"method","description":" Provides mechanism to define method per channel mappings for this gateway ","attributes":[{"name":"payload-expression","type":"string","description":" Expression that should be evaluated to generate the payload. ","required":false},{"name":"request-timeout","type":"string","description":" Provides the amount of time dispatcher would wait to send a message. This timeout would only apply if there is a potential to block in the send call. For example if this gateway is hooked up to a Queue channel. Value is specified in milliseconds. ","required":false},{"name":"reply-timeout","type":"string","description":" Allows you to specify how long this gateway will wait for the reply message before returning. By default it will wait indefinitely. \u0027null\u0027 is returned if the gateway times out. Value is specified in milliseconds. ","required":false},{"name":"reply-channel","type":"string","description":" Identifies the channel to which this gateway will subscribe, to receive reply Messages. The reply Message will then be converted to the return type of the method signature. ","required":false},{"name":"request-channel","type":"string","description":" Identifies channel the message will be sent to upon invocation of this method ","required":false},{"name":"name","type":"string","description":" The name of the method ","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"header","description":" Provides a mechanism to enrich the message with custom message headers. When this method is invoked, the generated message will be enriched with these headers. ","attributes":[{"name":"name","type":"string","description":"The name of the header","required":true},{"name":"expression","type":"string","description":"Expression to be evaluated to produce a value for the header. Either this or \u0027value\u0027 must be provided.","required":false},{"name":"value","type":"string","description":"The value of the header. Either this or \u0027expression\u0027 must be provided.","required":false}]}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"idempotent-receiver","description":"Defines an \u0027org.springframework.integration.handler.advice.IdempotentReceiverInterceptor\u0027 bean.","attributes":[{"name":"key-expression","type":"string","description":"Expression to populate an \u0027ExpressionEvaluatingMessageProcessor\u0027. Used by the underlying \u0027org.springframework.integration.selector.MetadataStoreSelector\u0027. Evaluates an \u0027idempotentKey\u0027 using the request Message as the evaluation context root object. Mutually exclusive with \u0027selector\u0027 and \u0027key-strategy\u0027.","required":false},{"name":"value-expression","type":"string","description":"Expression to populate an \u0027ExpressionEvaluatingMessageProcessor\u0027. Used by the underlying \u0027org.springframework.integration.selector.MetadataStoreSelector\u0027. Evaluates a \u0027value\u0027 for the \u0027idempotentKey\u0027 using the request Message as the evaluation context root object. Mutually exclusive with \u0027selector\u0027 and \u0027value-strategy\u0027. By default, the \u0027MetadataStoreSelector\u0027 uses the \u0027timestamp\u0027 message header as the Metadata \u0027value\u0027.","required":false},{"name":"discard-channel","type":"string","description":"Identifies the channel to send a message when \u0027IdempotentReceiverInterceptor\u0027 doesn\u0027t accept the message. When omitted, duplicate messages are forwarded to the handler with a \u0027DUPLICATE_MESSAGE\u0027 header.","required":false},{"name":"value-strategy","type":"string","description":"A \u0027MessageProcessor\u0027 reference. Used by the underlying \u0027org.springframework.integration.selector.MetadataStoreSelector\u0027. Evaluates a \u0027value\u0027 for the \u0027idempotentKey\u0027 from the request Message. Mutually exclusive with \u0027selector\u0027 and \u0027value-expression\u0027. By default, the \u0027MetadataStoreSelector\u0027 uses the \u0027timestamp\u0027 message header as the Metadata \u0027value\u0027.","required":false},{"name":"key-strategy","type":"string","description":"A \u0027MessageProcessor\u0027 reference. Used by the underlying \u0027org.springframework.integration.selector.MetadataStoreSelector\u0027. Evaluates an \u0027idempotentKey\u0027 from the request Message. Mutually exclusive with \u0027selector\u0027 and \u0027key-expression\u0027.","required":false},{"name":"selector","type":"string","description":"A \u0027MessageSelector\u0027 reference. Used to identify if the message should be accepted by the target \u0027MessageHandler\u0027 endpoint. Mutually exclusive with \u0027metadata-store\u0027 and \u0027key-strategy\u0027 or \u0027key-expression\u0027.","required":false},{"name":"endpoint","type":"string","description":"Consumer Endpoint name(s) or patterns. To specify more than one name(pattern) use \u0027,\u0027 (e.g. endpoint\u003d\"xxx, xxx*, *xxx, *xxx*, xxx*yyy\"). The endpoint \u0027id\u0027 is used to retrieve the target endpoint\u0027s \u0027MessageHandler\u0027 bean (using its \u0027.handler\u0027 suffix), for which the \u0027IdempotentReceiverInterceptor\u0027 will be applied.","required":true},{"name":"id","type":"string","required":false},{"name":"metadata-store","type":"string","description":"A \u0027ConcurrentMetadataStore\u0027 reference. Used by the underlying \u0027org.springframework.integration.selector.MetadataStoreSelector\u0027. Mutually exclusive with \u0027selector\u0027. Optional. The default \u0027MetadataStoreSelector\u0027 uses an internal \u0027SimpleMetadataStore\u0027 which does not maintain state across application executions.","required":false},{"name":"throw-exception-on-rejection","type":"string","description":"Throw an exception if the \u0027IdempotentReceiverInterceptor\u0027 rejects the message (default false). It is applied regardless of whether or not a discard channel is provided.","required":false}]},{"role":"endpoint","connectionType":"passthru","name":"spel-function","description":"Defines a bean for the \u0027org.springframework.integration.config.SpelFunctionFactoryBean\u0027.","attributes":[{"name":"class","type":"string","description":"The fully qualified class name where to find the static method for SpEL function.","required":true},{"name":"id","type":"string","description":"Specifies the name of the SpEL function.","required":true},{"name":"method","type":"string","description":"The method signature in the form \u0027methodName[([arg_list])]\u0027, where \u0027arg_list\u0027 is an optional, comma-separated list of fully-qualified type names.","required":true}]},{"role":"endpoint","connectionType":"tee","name":"aggregator","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.config.AggregatorFactoryBean\u0027.","attributes":[{"name":"correlation-strategy","type":"string","description":"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.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"lock-registry","type":"string","description":"A reference to a \u0027org.springframework.integration.support.locks.LockRegistry\u0027 bean to obtain \u0027java.util.concurrent.locks.Lock\u0027 by \u0027groupId\u0027. Used for concurrent operations on MessageGroups. By default an internal \u0027DefaultLockRegistry\u0027 is used.","required":false},{"name":"message-store","type":"string","description":"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.","required":false},{"name":"release-strategy-method","type":"string","description":"A method defined on the bean referenced by release-strategy, that implements the completion decision algorithm.","required":false},{"name":"release-lock-before-send","type":"boolean","description":"Set to true to release the message group lock before sending any output. See \"Avoiding Deadlocks\" in the Aggregator section of the reference manual for more information as to why this might be needed.","required":false},{"name":"headers-function","type":"string","description":"A reference to the \u0027Function\u0027 for merging and computing message headers for reply based on the \u0027MessageGroup\u0027 to release.","required":false},{"name":"send-partial-result-on-expiry","type":"string","description":"Specifies whether messages that expired should be aggregated and sent to the \u0027output-channel\u0027 or \u0027replyChannel\u0027. 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.expireMessageGroups(timeout). That could be accomplished via a ControlBus operation or by simply invoking that method if you have a reference to the MessageGroupStore instance.","required":false},{"name":"expire-groups-upon-completion","type":"boolean","description":"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 \u0027false\u0027","default":"false","required":false},{"name":"discard-channel","type":"string","description":"The channel where the aggregator will send the messages that timed out (if send-partial-results- on-expiry is \u0027false\u0027).","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"release-strategy","type":"string","description":"A reference to a bean that implements the release strategy. The bean can be an implementation of the ReleaseStrategy interface or a POJO","required":false},{"name":"release-strategy-expression","type":"string","description":"A SpEL expression to evaluate against a root object that is the Collection of messages within the message group (e.g, size() \u003e 6)","required":false},{"name":"empty-group-min-timeout","type":"string","description":"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. If this is set, the group is scheduled for removal after normal or partial sequences group release. When a MessageGroupStoreReaper is configured to expire partial groups, empty groups are also removed, but using this value. Note that the actual time to expire an empty group will also be affected by the reaper\u0027s \u0027timeout\u0027 property and it could be as much as this value plus the timeout.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"pop-sequence","type":"boolean","description":"Boolean flag specifying, if the \u0027MessageBuilder.popSequenceDetails()\u0027 should be called for the output message. Plays the opposite role to the \u0027AbstractMessageSplitter.setApplySequence()\u0027. Defaults to \u0027true\u0027.","default":"true","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false},{"name":"correlation-strategy-method","type":"string","description":"A method defined on the bean referenced by correlation-strategy, that implements the correlation decision algorithm","required":false},{"name":"expire-groups-upon-timeout","type":"boolean","description":"Boolean flag specifying, if a group is completed due to timeout (reaper or \u0027group-timeout(-expression)\u0027), whether the group should be removed. When true, late arriving messages will form a new group. When false, they will be discarded. Default is \u0027true\u0027 for an aggregator and \u0027false\u0027 for a resequencer.","required":false},{"name":"group-timeout-expression","type":"string","description":"A SpEL expression to evaluate a \u0027group-timeout\u0027 with the MessageGroup as the #root evaluation context object for scheduling the MessageGroup forced completion, when the \u0027ReleaseStrategy\u0027 does not \u0027release\u0027 the group when the current Message arrives. If \u0027group-timeout-expression\u0027 evaluates to \u0027null\u0027 or less than \u00270\u0027, the MessageGroup won\u0027t be scheduled to be forced complete. The action taken when the group is forced complete depends on the \u0027send-partial-result-on-expiry\u0027 attribute. Mutually exclusive with the \u0027group-timeout\u0027 attribute.","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"group-timeout","type":"string","description":"A timeout in milliseconds to force the MessageGroup complete, when the \u0027ReleaseStrategy\u0027 does not \u0027release\u0027 the group when the current Message arrives. If \u0027group-timeout\u0027 is not provided or is less than \u00270\u0027 the MessageGroup won\u0027t be scheduled to be forced complete. The action taken when the group is forced complete depends on the \u0027send-partial-result-on-expiry\u0027 attribute. Mutually exclusive with the \u0027group-timeout-expression\u0027 attribute.","required":false},{"name":"correlation-strategy-expression","type":"string","description":"A SpEL expression which implements correlation decision algorithm to apply to the Message (e.g., payload.getPerson().getId() - correlate based on the \u0027id\u0027 of the \u0027person\u0027 attribute of the message payload object)","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"scheduler","type":"string","description":"Provide a reference to the TaskScheduler instance to schedule \u0027forceComplete\u0027 on the MessageGroup when no new message arrives for the MessageGroup within the \u0027group-timeout\u0027 or \u0027group-timeout-expression\u0027. If it isn\u0027t provided, the default scheduler \u0027taskScheduler\u0027, registered in the ApplicationContext {ThreadPoolTaskScheduler} will be used. This attribute only applies if \u0027group-timeout\u0027 or \u0027group-timeout-expression\u0027 is specified.","required":false},{"name":"expression","type":"string","description":"A SpEL expression to be evaluated against the input message list as its root object.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":2},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expire-transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"expire-advice-chain","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Defines an endpoint for the \u0027org.springframework.integration.handler.ExpressionEvaluatingMessageHandler\u0027 or \u0027org.springframework.integration.handler.MethodInvokingMessageHandler\u0027.","attributes":[{"name":"channel","type":"string","description":"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).","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"ref","type":"string","description":"A reference to a bean defined in the application context.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"expression","type":"string","description":"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.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"tee","name":"splitter","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.splitter.AbstractMessageProcessingSplitter\u0027 implementation or \u0027org.springframework.integration.splitter.DefaultMessageSplitter\u0027.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"requires-reply","type":"boolean","description":"If set to \u0027true\u0027, a reply must return a non-null value. By setting \u0027requires-reply\u0027 to \u0027true\u0027, a \u0027ReplyRequiredException\u0027 will be raised for null reply messages. If \u0027requires-reply\u0027 is set to false, those messages are silently dropped. This attribute defaults to \u0027true\u0027 for \u0027transformer\u0027.","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"delimiters","type":"string","description":"Provide one or more delimiters (as a single String value, e.g. delimiters\u003d\",;:\") for tokenizing String-typed payload values. This attribute is only allowed if no \u0027ref\u0027 or \u0027expression\u0027 have been provided since that is when the DefaultMessageSplitter would be used, and it\u0027s the implementation that contains the \"delimiters\" property.","required":false},{"name":"apply-sequence","type":"string","description":"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. When true, existing correlation and sequence related headers are pushed onto a stack; downstream components, such as aggregators may pop the stack to revert the existing headers after aggregation. Default is \u0027true\u0027.","required":false},{"name":"discard-channel","type":"string","description":"The channel where the splitter will send the messages that return an empty container from split function.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"expression","type":"string","description":"A SpEL expression to be evaluated against the input Message as its root object.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"message-history","description":"Will register a Message History writer which will track the message history. There can only be one Message History writer per ApplicationContext hierarchy. See also @EnableMessageHistory annotation.","attributes":[{"name":"tracked-components","type":"string","description":" The list of component name patterns you want to track (e.g., tracked-components\u003d\"inputChannel, out*, *Channel, *Service\") ","default":"*","required":false}]},{"role":"router","connectionType":"content_based_router","name":"payload-type-router","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.router.PayloadTypeRouter\u0027. The \u0027mapping\u0027 sub-elements specify the associations between Java types and target channels.","attributes":[{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"max":-1},"name":"mapping","description":"Element defines the rules for this router to map the type of a payload to the corresponding channel (e.g. \u003cint:mapping value\u003d\u0027java.lang.String\u0027 channel\u003d\u0027stringChannel\u0027/\u003e).","attributes":[{"name":"type","type":"string","description":"The type of the payload that this mapping will match, e.g. \u0027java.lang.String\u0027 or \u0027java.lang.Integer\u0027 ","required":false},{"name":"channel","type":"string","description":"The channel the matching message will be send to. ","required":false}]}]}},{"role":"endpoint","connectionType":"passthru","name":"header-enricher","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.HeaderEnricher\u0027 for values defined in the MessageHeaders.","attributes":[{"name":"should-skip-nulls","type":"boolean","description":"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.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"default-overwrite","type":"boolean","description":"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 \u0027overwrite\u0027 attribute. If the \u0027default-overwrite\u0027 attribute is not provided, then the specified header values will NOT overwrite any existing ones with the same header names.","required":false},{"name":"ref","type":"string","description":"Reference to an Object to be invoked for header values. The \u0027method\u0027 attribute is required along with this.","required":false},{"name":"method","type":"string","description":"Method to be invoked on the referenced Object as specified by the \u0027ref\u0027 attribute. The method should return a Map with String-typed keys.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"max":-1},"children":[{"name":"reply-channel","description":"Shortcut to specify value for \u0027replyChannel\u0027 header. Can be a \u0027ref\u0027 to the MessageChannel, a \u0027value\u0027 as name of the MessageChannel, or some valid SpEL \u0027expression\u0027 which returns the MessageChannel reference or name of the MessageChannel.","attributes":[{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated at runtime to determine the header value. The EvaluationContext will include variables for \u0027payload\u0027 and \u0027headers\u0027.","required":false},{"name":"method","type":"string","description":"Name of a method to be invoked on the referenced target object.","required":false},{"name":"value","type":"string","description":"Literal value to be associated with the given header name.","required":false},{"name":"ref","type":"string","description":"Reference to be associated with the given header name.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]}]}},{"name":"header-channels-to-string","description":"Converts the \u0027replyChannel\u0027 and \u0027errorChannel\u0027 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.","attributes":[{"name":"time-to-live-expression","type":"string","description":"Overrides the header channel registry default \u0027reaperDelay\u0027 - specifies the minimum time that the mapping will remain in the registry, in milliseconds.","required":false}]},{"name":"error-channel","description":"Shortcut to specify value for \u0027errorChannel\u0027 header. Can be a \u0027ref\u0027 to the MessageChannel, a \u0027value\u0027 as name of the MessageChannel, or some valid SpEL \u0027expression\u0027 which returns the MessageChannel reference or name of the MessageChannel.","attributes":[{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated at runtime to determine the header value. The EvaluationContext will include variables for \u0027payload\u0027 and \u0027headers\u0027.","required":false},{"name":"method","type":"string","description":"Name of a method to be invoked on the referenced target object.","required":false},{"name":"value","type":"string","description":"Literal value to be associated with the given header name.","required":false},{"name":"ref","type":"string","description":"Reference to be associated with the given header name.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]}]}},{"name":"correlation-id","description":"Shortcut to specify value for \u0027correlationId\u0027 header","attributes":[{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated at runtime to determine the header value. The EvaluationContext will include variables for \u0027payload\u0027 and \u0027headers\u0027.","required":false},{"name":"method","type":"string","description":"Name of a method to be invoked on the referenced target object.","required":false},{"name":"value","type":"string","description":"Literal value to be associated with the given header name.","required":false},{"name":"ref","type":"string","description":"Reference to be associated with the given header name.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]}]}},{"name":"expiration-date","description":"Shortcut to specify a value for the \u0027expirationDate\u0027 header (java.lang.Long).","attributes":[{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated at runtime to determine the header value. The EvaluationContext will include variables for \u0027payload\u0027 and \u0027headers\u0027.","required":false},{"name":"method","type":"string","description":"Name of a method to be invoked on the referenced target object.","required":false},{"name":"value","type":"string","description":"Literal value to be associated with the given header name.","required":false},{"name":"ref","type":"string","description":"Reference to be associated with the given header name.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]}]}},{"name":"priority","description":"Shortcut to specify a value for the \u0027priority\u0027 header.","attributes":[{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated at runtime to determine the header value. The EvaluationContext will include variables for \u0027payload\u0027 and \u0027headers\u0027.","required":false},{"name":"method","type":"string","description":"Name of a method to be invoked on the referenced target object.","required":false},{"name":"value","type":"string","description":"Literal value to be associated with the given header name.","required":false},{"name":"ref","type":"string","description":"Reference to be associated with the given header name.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]}]}},{"name":"routing-slip","description":"The \u0027RoutingSlip\u0027 header. semicolon-separated value of message channel names, or bean names of \u0027org.springframework.integration.routingslip.RoutingSlipRouteStrategy\u0027 or SpEL expression like \u0027request.headers[nextPathHeader]\u0027.","attributes":[{"name":"overwrite","type":"boolean","required":false},{"name":"value","type":"string","required":false}]},{"name":"header","description":"Element that accepts any user-defined header name/value pair.","attributes":[{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated at runtime to determine the header value. The EvaluationContext will include variables for \u0027payload\u0027 and \u0027headers\u0027.","required":false},{"name":"method","type":"string","description":"Name of a method to be invoked on the referenced target object.","required":false},{"name":"value","type":"string","description":"Literal value to be associated with the given header name.","required":false},{"name":"name","type":"string","description":"Name of the header to be added.","required":true},{"name":"ref","type":"string","description":"Reference to be associated with the given header name.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]}]}},{"occurrence":{"min":0},"name":"poller","description":"Allows you to configure Message Poller if this endpoint is a Polling Consumer","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"map-to-object-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.MapToObjectTransformer\u0027 that converts SpEL-based Map to an object.","attributes":[{"name":"type","type":"string","description":"Fully qualified name of the java type to be created by this transformer (e.g. foo.bar.Foo) NOTE: This attribute is mutually-exclusive with \u0027ref\u0027.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"ref","type":"string","description":"The name of the bean to be produced by this transformer. The bean MUST BE of scope \u0027prototype\u0027. NOTE: This attribute is mutually-exclusive with \u0027type\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"payload-deserializing-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.PayloadDeserializingTransformer\u0027 that converts a byte array to an object.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"deserializer","type":"string","description":"Reference to a Deserializer instance to convert from a byte array to an object. This is optional. The default will use standard Java deserialization.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"white-list","type":"string","description":"When using the default Deserializer, a list of package/class patterns indicating classes that are allowed to be deserialized. Consider providing this if you receive data from untrusted sources. Example: \"com.mycom.*, com.yourcom.*\".","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"router","connectionType":"tee","name":"header-filter","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.HeaderFilter\u0027 to remove values defined in the MessageHeaders.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"pattern-match","type":"boolean","description":"Boolean flag that specifies whether values provided in \u0027header-names\u0027 should be treated as match patterns or literal values. For example header-names\u003d\u0027foo*\u0027 would mean remove all headers that begin with \u0027foo\u0027 including the header named \u0027foo*\u0027. However if you want to treat \u0027*\u0027 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.","default":"true","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"header-names","type":"string","description":"Specify one or more header names (as a comma separated list) to be removed from the MessageHeaders of the Message being handled.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}]},{"role":"endpoint","connectionType":"source","name":"resource-inbound-channel-adapter","description":"Defines a Polling Channel Adapter for the \u0027org.springframework.integration.resource.ResourceRetrievingMessageSource\u0027 that receives Resource(s) and sends them to a MessageChannel identified via \u0027channel\u0027 attribute.","attributes":[{"name":"send-timeout","type":"string","description":"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.","required":false},{"name":"channel","type":"string","description":"Channel where Message will be sent to","required":false},{"name":"pattern-resolver","type":"string","description":"Reference to a org.springframework.core.io.support.ResourcePatternResolver.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"filter","type":"string","description":"Reference to the implementation of org.springframework.integration.util.CollectionFilter.","required":false},{"name":"id","type":"string","description":"Component identifier","required":false},{"name":"pattern","type":"string","description":"Location pattern expression (e.g., \"/**/*.txt\")","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"selector","attributes":[{"name":"id","type":"string","required":true},{"name":"ref","type":"string","required":true},{"name":"method","type":"string","required":false}]},{"role":"transformer","connectionType":"passthru","name":"object-to-map-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.ObjectToMapTransformer\u0027 that converts any Object payload to a SpEL Map.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"object-mapper","type":"string","description":"Optional reference to a JsonObjectMapper instance. By default, a JsonObjectMapper that uses a JsonObjectMapperProvider.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"flatten","type":"string","description":"Specifies if the result Map of Maps should be transformed further to flat keys of object\u0027s property paths. Default is \u0027true\u0027.","default":"true","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"object-to-string-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.ObjectToStringTransformer\u0027 that converts any Object payload to a String by invoking its toString() method.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"charset","type":"string","description":"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","default":"UTF-8","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"claim-check-out","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.ClaimCheckOutTransformer\u0027 that accepts a Message whose payload is a UUID and retrieves the Message associated with that id from a MessageStore if available (else null).","attributes":[{"name":"remove-message","type":"boolean","description":"If set to \u0027true\u0027 the Message will be removed from the MessageStore by this transformer. Useful when Message can be \u0027claimed\u0027 only once. DEFAULT is \u0027false\u0027.","default":"false","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"message-store","type":"string","description":"Reference to the MessageStore to be used by this Claim Check transformer. If not specified, the default reference will be to a bean named \u0027messageStore\u0027.","default":"messageStore","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"sequence","occurrence":{"min":0},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027."},{"role":"transformer","connectionType":"passthru","name":"transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.MessageTransformingHandler\u0027 based on the \u0027org.springframework.integration.transformer.Transformer\u0027 strategy.","attributes":[{"name":"expression","type":"string","description":"A SpEL expression to be evaluated against the input Message as its root object.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"requires-reply","type":"boolean","description":"If set to \u0027true\u0027, a reply must return a non-null value. By setting \u0027requires-reply\u0027 to \u0027true\u0027, a \u0027ReplyRequiredException\u0027 will be raised for null reply messages. If \u0027requires-reply\u0027 is set to false, those messages are silently dropped. This attribute defaults to \u0027true\u0027 for \u0027transformer\u0027.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"annotation-config","description":"Enables annotation support for Message Endpoints.","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"enable-publisher","attributes":[{"name":"proxy-target-class","type":"boolean","description":"Indicate whether subclass-based (CGLIB) proxies are to be created as opposed to standard Java interface-based proxies.","default":"false","required":false},{"name":"order","type":"number","description":"Indicate the order in which the \u0027org.springframework.integration.aop.PublisherAnnotationBeanPostProcessor\u0027 should be applied. Defaults to \u0027org.springframework.core.Ordered.LOWEST_PRECEDENCE\u0027.","default":"2147483647","required":false},{"name":"default-publisher-channel","type":"string","description":"Default output channel for the @Publisher annotation support.","required":false}]}]}},{"role":"endpoint","connectionType":"request_reply","name":"enricher","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.ContentEnricher\u0027 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.","attributes":[{"name":"request-channel","type":"string","description":"Channel to which a Message will be sent to get the data to use for enrichment. This attribute is optional. Not specifying a \u0027request-channel\u0027 is useful in situations, where only static values shall be used for enrichment using the \u0027property\u0027 sub-element.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"reply-timeout","type":"string","description":"Set the timeout value for receiving reply messages in milliseconds. If not explicitly configured, the default is one second. ","required":false},{"name":"error-channel","type":"string","description":"Used when exceptions occur in a downstream flow and allows the error handling flow to return an alternative object to use for enrichment. If no \"error-channel\" reference is provided, this enricher will propagate Exceptions to the caller.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"requires-reply","type":"boolean","description":"If you specify a \u0027request-channel\u0027 you can optionally set the \u0027requires-reply\u0027 attribute as well. If you set this attribute to \u0027true\u0027, a reply must return a non-null value. For example, you dispatch a message to the request-channel (backed by a \u0027QueueChannel\u0027). If the reply does not return within the specified \u0027replyTimeout\u0027, then the reply message will end up being Null. By setting \u0027requires-reply\u0027 to \u0027true\u0027, a \u0027ReplyRequiredException\u0027 will be raised for null reply messages. If \u0027requires-reply\u0027 is set to false, those messages are silently dropped. This attribute defaults to \u0027true\u0027, if not specified. ","default":"true","required":false},{"name":"should-clone-payload","type":"boolean","description":"Boolean value indicating whether any payload that implements Cloneable should be cloned prior to sending the Message to the request channel 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 \u0027Cloneable\u0027, then setting this attribute to \u0027true\u0027 has NO effect. Default is false.","required":false},{"name":"request-timeout","type":"string","description":"Set the timeout value for sending request messages in milliseconds. If not explicitly configured, the default is one second. ","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"request-payload-expression","type":"string","description":"By default the original message\u0027s payload will be used as payload that will be send to the request-channel. By specifying a SpEL expression as value for the \u0027request-payload-expression\u0027 attribute, a subset of the original payload, a header value or any other resolvable SpEL expression can be used as the basis for the payload, that will be sent to the request-channel. For the Expression evaluation the full message is available as the \u0027root object\u0027. For instance the following SpEL expressions (among others) are possible: - payload.foo - headers.foobar - new java.util.Date() - \u0027foo\u0027 + \u0027bar\u0027 If more sophisticated logic is required (e.g. changing the message headers etc.) please use additional downstream transformers.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"reply-channel","type":"string","description":"Channel where a reply Message is expected. This is optional; typically the auto-generated temporary reply channel is sufficient.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0,"max":-1},"name":"property","description":"Each property sub-element provides the name of a property (via the required \u0027name\u0027 attribute). That property should be settable on the target payload instance. Exactly one of the \u0027value\u0027 or \u0027expression\u0027 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.","attributes":[{"name":"null-result-expression","type":"string","description":"The expression to be evaluated, when the underlying enricher sub-flow returns null. The evaluation context root object is requestMessage.","required":false},{"name":"value","type":"string","description":"The value of the property. Either this or \u0027expression\u0027 must be provided.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated to produce a value for the property. Either this or \u0027value\u0027 must be provided.","required":false},{"name":"name","type":"string","description":"The name of the property on the target payload. Please be aware that this value is a SpEL expression, also. For example, if your payload is represented by a \u0027java.util.Map\u0027, you can add new Map entries using the \u0027name\u0027 attribute, e.g. name\u003d\u0027foo\u0027 would add a new Map entry with key \u0027foo\u0027.","required":true},{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type. Allowed only in case of \u0027value\u0027 attribute.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"header","description":"Each header sub-element provides the name of a message header (via the required \u0027name\u0027 attribute). Exactly one of the \u0027value\u0027 or \u0027expression\u0027 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.","attributes":[{"name":"null-result-expression","type":"string","description":"The expression to be evaluated, when the underlying enricher sub-flow returns null. The evaluation context root object is requestMessage.","required":false},{"name":"value","type":"string","description":"The value of the property. Either this or \u0027expression\u0027 must be provided.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value. Unlike the Header Enricher, this attribute is \u0027true\u0027 by default, similar to the \u0027property\u0027 attribute.","default":"true","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated to produce a value for the property. Either this or \u0027value\u0027 must be provided.","required":false},{"name":"name","type":"string","description":"The name of the property on the target payload. Please be aware that this value is a SpEL expression, also. For example, if your payload is represented by a \u0027java.util.Map\u0027, you can add new Map entries using the \u0027name\u0027 attribute, e.g. name\u003d\u0027foo\u0027 would add a new Map entry with key \u0027foo\u0027.","required":true},{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type. Allowed only in case of \u0027value\u0027 attribute.","required":false}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"channel-interceptor","description":"Allows you to define channel interceptors (\u0027org.springframework.messaging.support.ChannelInterceptor\u0027 implementation) to be applied globally.","attributes":[{"name":"pattern","type":"string","description":"[REQUIRED] Channel name(s) or patterns. To specify more than one channel use \u0027,\u0027. A leading \u0027!\u0027 negates the pattern match (\u0027!foo*\u0027 means don\u0027t add interceptor where the name matches the pattern \u0027foo*\u0027). For example \"input*, foo, bar, !Foo*\".","required":false},{"name":"id","type":"string","required":false},{"name":"ref","type":"string","description":" [OPTIONAL] points to a bean reference which implements this interceptor. Could also be defined as inner \u0026lt;bean\u0026gt; element. ","required":false},{"name":"order","type":"number","description":"[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)","required":false}],"childGroup":{"indicator":"sequence","children":[]}},{"role":"transformer","connectionType":"passthru","name":"syslog-to-map-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.SyslogToMapTransformer\u0027 that converts an RFC5424 packet to a Map.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"channel","connectionType":"passthru","name":"publish-subscribe-channel","description":"Defines a \u0027org.springframework.integration.channel.PublishSubscribeChannel\u0027 that broadcasts messages to its subscribers.","attributes":[{"name":"id","type":"string","required":true},{"name":"message-converter","type":"string","description":" Used with \u0027datatype\u0027 to convert the message payload, if necessary, to one of the datatypes (in order). Note: only the MessageConverter.fromMessage(Message, Class) method is used. If the returned object is not a Message, the inbound headers will be copied; if the returned object is a Message, it is expected that the converter wil have fully populated the headers; no further action is performed by the channel. If null is returned, conversion to the next datatype (if any) will be attempted. Default is a \u0027DefaultDatatypeChannelMessageConverter\u0027 which, in turn, delegates to the \u0027integrationConversionService\u0027 (if present). ","required":false},{"name":"min-subscribers","type":"string","description":"Specifies the minimum subscribers required to be subscribed to this channel; if the minimum number of subscribers receive the message, the send is deemed to be successful (returns true). Defaults to 0.","required":false},{"name":"error-handler","type":"string","description":" Provides reference to a bean that implements org.springframework.util.ErrorHandler and provides a strategy for handling errors. This is especially useful for handling errors that occur during asynchronous execution of tasks that have been submitted to a TaskScheduler, where it may not be possible to throw the error to the original caller. ","required":false},{"name":"ignore-failures","type":"string","description":"Specify whether Exceptions thrown by any subscribed handler should be ignored (only logged).","default":"false","required":false},{"name":"task-executor","type":"string","description":"Provides the reference to a bean that implements org.springframework.core.task.TaskExecutor which is used when dispatching Messages to this channel\u0027s subscribers. Also, when using a TaskExecutor, keep in mind that any transaction active for the sender will NOT propagate to the handler invocation since the TaskExecutor dispatches to the handler on a separate Thread. Usually configured using the \u0027task\u0027 namespace support provided by Spring (e.g., \u003ctask:executor/\u003e).","required":false},{"name":"scope","type":"string","required":false},{"name":"max-subscribers","type":"string","description":"Specifies the maximum subscribers allowed on this channel; defaults to Integer.MAX_VALUE, unless a \u0027channelInitializer\u0027 bean has previously been declared, with a different default.","required":false},{"name":"apply-sequence","type":"string","description":"Specify whether the sequence size, sequence number, and correlation id headers should be set on Messages that are sent through this channel.","default":"false","required":false},{"name":"datatype","type":"string","description":" Allows you to identify this channel as a Datatype channel and specify the type of the Message payload this channel accepts (e.g., datatype\u003d\"java.lang.String\"). A Datatype channel is a channel that accepts messages containing payloads of a certain type. ","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"interceptors","description":"A list of ChannelInterceptor instances whose preSend and postSend methods will be applied to this channel. Note that the preReceive and postReceive methods have no effect for a SubscribableChannel instance.","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","attributes":[{"name":"bean","type":"string","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"wire-tap","description":"Allows you to configure a Wire Tap interceptor that will send a copy of the message to a channel identified by \u0027channel\u0027 attribute.","attributes":[{"name":"selector","type":"string","description":"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. Mutually exclusive with \u0027selector-expression\u0027.","required":false},{"name":"selector-expression","type":"string","description":"A boolean expression evaluated against the message to determine whether it should sent to the intercepting channel. Mutually exclusive with \u0027selector\u0027.","required":false},{"name":"channel","type":"string","required":true},{"name":"timeout","type":"string","description":"The timeout for sending the message to the intercepting channel","required":false},{"name":"id","type":"string","required":false}]}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"bridge","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.handler.BridgeHandler\u0027 that passes a Message to the output-channel without modifying it.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"max":-1},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"sink","name":"logging-channel-adapter","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.handler.LoggingHandler\u0027.","attributes":[{"name":"channel","type":"string","description":"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).","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"logger-name","type":"string","description":"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.","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"expression","type":"string","description":"Provide a SpEL expression to be evaluated against the Message as the root object. For example, the default behavior is equivalent to an expression of \"payload\", or an expression may evaluate against the payload itself (\"payload.address.city\") or headers (\"headers.foo\"). This attribute and the \u0027log-full-message\u0027 attribute are mutually exclusive. See the documentation on the \u0027log-full-message\u0027 attribute for more information.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"level","type":"string","description":"Specify the log level.","default":"INFO","required":false,"restriction":{"type":"enum","values":["FATAL","ERROR","WARN","INFO","DEBUG","TRACE"]}},{"name":"log-full-message","type":"string","description":"Specify whether to log the full message. This attribute and the \u0027expression\u0027 attribute are mutually exclusive. Setting this to true is equivalent to setting an expression value of \"#root\" since the Message is the root object against which the expression will be evaluated. If no \u0027expression\u0027 is provided, and this value is false (the default), only the payload will be logged.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"control-bus","description":"Defines a bean for the \u0027org.springframework.integration.config.ExpressionControlBusFactoryBean\u0027.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"router","connectionType":"content_based_router","name":"recipient-list-router","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.router.RecipientListRouter\u0027. A RecipientListRouter will send each received Message to a statically defined list of Message Channels. Another convenient option when configuring a RecipientListRouter is to define the \u0027selector-expression\u0027 for the \u0027mapping\u0027 sub elements. The \u0027selector-expression\u0027 uses Spring Expression Language (SpEL) and can be used as selectors for individual recipient channels. This is similar to using a Filter at the beginning of \u0027chain\u0027 to act as a \"Selective Consumer\". However, in this case, it\u0027s all combined rather concisely into the router\u0027s configuration.","attributes":[{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"name":"recipient","description":"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.","attributes":[{"name":"selector-expression","type":"string","description":"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.","required":false},{"name":"channel","type":"string","description":"The channel (recepient) that the message will be send to. ","required":true}]}]}},{"role":"transformer","connectionType":"passthru","name":"stream-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.StreamTransformer\u0027 that converts an \u0027InputStream\u0027 payload to a byte[] or String. Providing a \u0027charset\u0027 signals that the conversion to String is required.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"charset","type":"string","description":"Allows you to specify the Charset (e.g., US-ASCII, ISO-8859-1, UTF-8) to be used when transforming byte[]. None by default, meaning the payload will be byte[].","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"source","name":"inbound-channel-adapter","description":"Defines a Polling Channel Adapter for the \u0027org.springframework.integration.endpoint.MethodInvokingMessageSource\u0027, or \u0027org.springframework.integration.endpoint.ExpressionEvaluatingMessageSource\u0027 or \u0027org.springframework.integration.scripting.ScriptExecutingMessageSource\u0027 that receives from a MessageSource and sends to a MessageChannel. Note, when using the \u0027expression\u0027 attribute, or \u0027expression\u0027 or \u0027script\u0027 sub-element, there is not yet a root Message object and therefore the \u0027payload\u0027 and \u0027headers\u0027 properties are not available in the expression or script.","attributes":[{"name":"send-timeout","type":"string","description":"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. Defaults to \u0027-1\u0027 - blocking indefinitely.","required":false},{"name":"channel","type":"string","description":"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).","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"ref","type":"string","description":"A reference to a bean defined in the application context.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"expression","type":"string","description":"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.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"header","description":" Provides mechanism to enrich content of the message with custom message headers. When this method is going to be invoked the generated message will be enriched with these headers.","attributes":[{"name":"name","type":"string","description":"The name of the header","required":true},{"name":"expression","type":"string","description":"Expression to be evaluated to produce a value for the header. Either this or \u0027value\u0027 must be provided.","required":false},{"name":"value","type":"string","description":"The value of the header. Either this or \u0027expression\u0027 must be provided.","required":false}]}]}},{"role":"transformer","connectionType":"passthru","name":"payload-serializing-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.PayloadSerializingTransformer\u0027 that converts an object payload to a byte array.","attributes":[{"name":"serializer","type":"string","description":"Reference to a Serializer instance to convert from an object to a byte array. This is optional. The default will use standard Java serialization.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"tee","name":"resequencer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.aggregator.ResequencingMessageHandler\u0027.","attributes":[{"name":"correlation-strategy","type":"string","description":"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.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"lock-registry","type":"string","description":"A reference to a \u0027org.springframework.integration.support.locks.LockRegistry\u0027 bean to obtain \u0027java.util.concurrent.locks.Lock\u0027 by \u0027groupId\u0027. Used for concurrent operations on MessageGroups. By default an internal \u0027DefaultLockRegistry\u0027 is used.","required":false},{"name":"message-store","type":"string","description":"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.","required":false},{"name":"release-strategy-method","type":"string","description":"A method defined on the bean referenced by release-strategy, that implements the completion decision algorithm.","required":false},{"name":"release-lock-before-send","type":"boolean","description":"Set to true to release the message group lock before sending any output. See \"Avoiding Deadlocks\" in the Aggregator section of the reference manual for more information as to why this might be needed.","required":false},{"name":"send-partial-result-on-expiry","type":"string","description":"Specifies whether messages that expired should be aggregated and sent to the \u0027output-channel\u0027 or \u0027replyChannel\u0027. 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.expireMessageGroups(timeout). That could be accomplished via a ControlBus operation or by simply invoking that method if you have a reference to the MessageGroupStore instance.","required":false},{"name":"discard-channel","type":"string","description":"The channel where the aggregator will send the messages that timed out (if send-partial-results- on-expiry is \u0027false\u0027).","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"release-strategy","type":"string","description":"A reference to a bean that implements the release strategy. The bean can be an implementation of the ReleaseStrategy interface or a POJO","required":false},{"name":"release-strategy-expression","type":"string","description":"A SpEL expression to evaluate against a root object that is the Collection of messages within the message group (e.g, size() \u003e 6)","required":false},{"name":"empty-group-min-timeout","type":"string","description":"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. If this is set, the group is scheduled for removal after normal or partial sequences group release. When a MessageGroupStoreReaper is configured to expire partial groups, empty groups are also removed, but using this value. Note that the actual time to expire an empty group will also be affected by the reaper\u0027s \u0027timeout\u0027 property and it could be as much as this value plus the timeout.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"pop-sequence","type":"boolean","description":"Boolean flag specifying, if the \u0027MessageBuilder.popSequenceDetails()\u0027 should be called for the output message. Plays the opposite role to the \u0027AbstractMessageSplitter.setApplySequence()\u0027. Defaults to \u0027true\u0027.","default":"true","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false},{"name":"correlation-strategy-method","type":"string","description":"A method defined on the bean referenced by correlation-strategy, that implements the correlation decision algorithm","required":false},{"name":"expire-groups-upon-timeout","type":"boolean","description":"Boolean flag specifying, if a group is completed due to timeout (reaper or \u0027group-timeout(-expression)\u0027), whether the group should be removed. When true, late arriving messages will form a new group. When false, they will be discarded. Default is \u0027true\u0027 for an aggregator and \u0027false\u0027 for a resequencer.","required":false},{"name":"group-timeout-expression","type":"string","description":"A SpEL expression to evaluate a \u0027group-timeout\u0027 with the MessageGroup as the #root evaluation context object for scheduling the MessageGroup forced completion, when the \u0027ReleaseStrategy\u0027 does not \u0027release\u0027 the group when the current Message arrives. If \u0027group-timeout-expression\u0027 evaluates to \u0027null\u0027 or less than \u00270\u0027, the MessageGroup won\u0027t be scheduled to be forced complete. The action taken when the group is forced complete depends on the \u0027send-partial-result-on-expiry\u0027 attribute. Mutually exclusive with the \u0027group-timeout\u0027 attribute.","required":false},{"name":"release-partial-sequences","type":"string","description":"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).","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"group-timeout","type":"string","description":"A timeout in milliseconds to force the MessageGroup complete, when the \u0027ReleaseStrategy\u0027 does not \u0027release\u0027 the group when the current Message arrives. If \u0027group-timeout\u0027 is not provided or is less than \u00270\u0027 the MessageGroup won\u0027t be scheduled to be forced complete. The action taken when the group is forced complete depends on the \u0027send-partial-result-on-expiry\u0027 attribute. Mutually exclusive with the \u0027group-timeout-expression\u0027 attribute.","required":false},{"name":"correlation-strategy-expression","type":"string","description":"A SpEL expression which implements correlation decision algorithm to apply to the Message (e.g., payload.getPerson().getId() - correlate based on the \u0027id\u0027 of the \u0027person\u0027 attribute of the message payload object)","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"scheduler","type":"string","description":"Provide a reference to the TaskScheduler instance to schedule \u0027forceComplete\u0027 on the MessageGroup when no new message arrives for the MessageGroup within the \u0027group-timeout\u0027 or \u0027group-timeout-expression\u0027. If it isn\u0027t provided, the default scheduler \u0027taskScheduler\u0027, registered in the ApplicationContext {ThreadPoolTaskScheduler} will be used. This attribute only applies if \u0027group-timeout\u0027 or \u0027group-timeout-expression\u0027 is specified.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":2},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expire-transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"expire-advice-chain","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"role":"router","connectionType":"content_based_router","name":"router","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.router.AbstractMessageProcessingRouter\u0027 implementation that serves as an adapter for invoking a method on any Spring-managed object as specified by the \"ref\" and \"method\" attributes.","attributes":[{"name":"method","type":"string","description":"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\".","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"expression","type":"string","description":"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\u003d\"@someBean.someMethod(payload.foo, headers.bar)\"","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"ref","type":"string","description":"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).","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expression","description":" You can use SpEL Expressions to implement simple computations. Generally a SpEL expression is evaluated and the result is either a channel name or alternatively the result can be mapped to a channel using the \u0027mapping\u0027 sub-element. The SpEL expression can return a Collection, effectively making this Router a Dynamic Recipient List Router. Whenever the expression returns multiple channel values the Message will be forwarded to each channel.","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"mapping","description":" Defines mapping rules for this router (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","attributes":[{"name":"channel","type":"string","description":"A reference to a bean that defines a Message Channel (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","required":false},{"name":"value","type":"string","description":"A value of the evaluation token that will be mapped to a channel reference (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","required":false}]}]}},{"role":"endpoint","connectionType":"tee","name":"barrier","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.aggregator.BarrierMessageHandler\u0027 that suspends a thread until a corresponding release message is received. The endpoint\u0027s message handler is a \u0027BarrierMessageHandler\u0027.","attributes":[{"name":"correlation-strategy","type":"string","description":"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.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"discard-channel","type":"string","description":"The message channel to which to send a trigger message if it arrives after the main thread has timed out.","required":false},{"name":"requires-reply","type":"string","description":"Specify whether the barrier must return a non-null value. This value will be \u0027false\u0027 by default, but if set to \u0027true\u0027, a ReplyRequiredException will be thrown when the barrier times out.","required":false},{"name":"id","type":"string","required":true},{"name":"correlation-strategy-expression","type":"string","description":"A SpEL expression which implements correlation decision algorithm to apply to the Message (e.g., payload.getPerson().getId() - correlate based on the \u0027id\u0027 of the \u0027person\u0027 attribute of the message payload object)","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"output-processor","type":"string","description":"A reference to a bean that implements \u0027MessageGroupProcessor\u0027. The processor is invoked to produce the result when the release is triggered. By default the payloads of the two messages are aggregated as a \u0027Collection\u0027 and the message headers are merged.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"timeout","type":"string","description":"The time in milliseconds to suspend the thread. See `requires-reply`. Also, if the trigger message is received first, the time that thread will wait before logging an error and exiting.","required":true},{"name":"correlation-strategy-method","type":"string","description":"A method defined on the bean referenced by correlation-strategy, that implements the correlation decision algorithm","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}},{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"wire-tap","description":"Defines a \u0027org.springframework.integration.channel.interceptor.WireTap\u0027 bean.","attributes":[{"name":"selector","type":"string","description":"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. Mutually exclusive with \u0027selector-expression\u0027.","required":false},{"name":"selector-expression","type":"string","description":"A boolean expression evaluated against the message to determine whether it should sent to the intercepting channel. Mutually exclusive with \u0027selector\u0027.","required":false},{"name":"channel","type":"string","required":true},{"name":"timeout","type":"string","description":"The timeout for sending the message to the intercepting channel","required":false},{"name":"pattern","type":"string","description":"[REQUIRED] Channel name(s) or patterns. To specify more than one channel use \u0027,\u0027 (e.g., channel-name-pattern\u003d\"input*, foo, bar\")","required":false},{"name":"id","type":"string","required":false},{"name":"order","type":"number","description":"[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)","required":false}]},{"role":"router","connectionType":"content_based_router","name":"header-value-router","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.router.HeaderValueRouter\u0027. The \u0027header-name\u0027 attribute specifies which header value to lookup. That header value can then provide the name of a channel to be resolved. Alternatively, 1 or more \u0027mapping\u0027 sub-elements may be provided with expected header values mapped to channels.","attributes":[{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false},{"name":"header-name","type":"string","description":"Name of the header whose value will be used to route messages.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0,"max":-1},"name":"mapping","description":" Defines mapping rules for this router (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","attributes":[{"name":"channel","type":"string","description":"A reference to a bean that defines a Message Channel (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","required":false},{"name":"value","type":"string","description":"A value of the evaluation token that will be mapped to a channel reference (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","required":false}]}]}},{"role":"endpoint","connectionType":"passthru","name":"delayer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.handler.DelayHandler\u0027 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 \u0027default-delay\u0027 of this endpoint.","attributes":[{"name":"ignore-expression-failures","type":"string","description":"Specify whether Exceptions thrown by \u0027expression\u0027 evaluation should be ignored (only logged). In this case case the delayer will fall back to the to the \u0027default-delay\u0027. Default behaviour. If this attribute is specified as \u0027false\u0027, any \u0027expression\u0027 evaluation Exception will be thrown to the caller without falling back to the to the \u0027default-delay\u0027.","default":"true","required":false},{"name":"message-store","type":"string","description":"Provide a reference to the MessageStore instance that should be used to store Messages while awaiting the delay.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"expression","type":"string","description":"Specify the SpEL expression that evaluates to the delay value in milliseconds, or a java.util.Date.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"id","type":"string","required":true},{"name":"scheduler","type":"string","description":"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.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"default-delay","type":"string","description":"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.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"expression","description":"Specify the SpEL expression that evaluates to the delay value in milliseconds, or a java.util.Date.","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}},{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"publishing-interceptor","description":"Defines a MessagePublishingInterceptor which allows you to generate messages as a by-product of method invocations on Spring configured components.","attributes":[{"name":"default-channel","type":"string","description":"Specifies default-channel to publish messages","default":"nullChannel","required":false},{"name":"id","type":"string","required":true}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"method","attributes":[{"name":"payload","type":"string","required":false},{"name":"pattern","type":"string","required":false},{"name":"channel","type":"string","required":false}],"childGroup":{"indicator":"sequence","occurrence":{"min":0,"max":-1},"children":[{"name":"header","attributes":[{"name":"expression","type":"string","required":false},{"name":"value","type":"string","required":false},{"name":"name","type":"string","required":true}]}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"handler-retry-advice","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}},{"role":"channel","connectionType":"passthru","name":"channel","description":"Defines a Point-to-Point MessageChannel. See \u0027PointToPointChannelParser\u0027 source code for \u0027MessageChannel\u0027 implementations.","attributes":[{"name":"id","type":"string","required":true},{"name":"message-converter","type":"string","description":" Used with \u0027datatype\u0027 to convert the message payload, if necessary, to one of the datatypes (in order). Note: only the MessageConverter.fromMessage(Message, Class) method is used. If the returned object is not a Message, the inbound headers will be copied; if the returned object is a Message, it is expected that the converter wil have fully populated the headers; no further action is performed by the channel. If null is returned, conversion to the next datatype (if any) will be attempted. Default is a \u0027DefaultDatatypeChannelMessageConverter\u0027 which, in turn, delegates to the \u0027integrationConversionService\u0027 (if present). ","required":false},{"name":"fixed-subscriber","type":"boolean","description":"When true, only one subscriber is allowed; the subscriber must be available at context initialization time, and will be subscribed during bean initialization rather than when being started; \u0027auto-startup\u003d\"false\"\u0027 will take no effect on a subscriber to this channel, the subscriber will always be \"started\". The subscriber cannot be stopped. When true, no sub elements are allowed; \u0027datatype\u0027 is not allowed; \u0027message-converter\u0027 is not allowed. Default: false.","default":"false","required":false},{"name":"scope","type":"string","required":false},{"name":"datatype","type":"string","description":" Allows you to identify this channel as a Datatype channel and specify the type of the Message payload this channel accepts (e.g., datatype\u003d\"java.lang.String\"). A Datatype channel is a channel that accepts messages containing payloads of a certain type. ","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"queue","description":"Identifies this channel as a Queue style channel","attributes":[{"name":"message-store","type":"string","description":"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 \"capacity\" and \"ref\" attributes (only one can be specified).","required":false},{"name":"capacity","type":"string","description":"Capacity for this queue. Default capacity is 0 which means this queue will accumulate as many messages as available resources allow. This attribute is mutually exclusive with the \"message-store\" and \"ref\" attributes (only one can be specified).","required":false},{"name":"ref","type":"string","description":"Reference to a Queue that can be used to buffer the messages. This attribute is mutually exclusive with the \"capacity\" and \"message-store\" attributes (only one can be specified).","required":false}]},{"occurrence":{"min":0},"name":"priority-queue","description":"Identifies this channel as a Queue style channel where messages could be prioritized based on custom logic","attributes":[{"name":"message-store","type":"string","description":"A reference to a bean that implements \u0027org.springframework.integration.store.PriorityCapableChannelMessageStore\u0027. A message store that supports priority in a manner defined by the store. When set, the underlying channel will be a \u0027QueueChannel\u0027 that delegates to a \u0027MessageGroupQueue\u0027 backed by the store. Not allowed if \u0027comparator\u0027 is set.","required":false},{"name":"capacity","type":"string","description":"Capacity for this queue. Default capacity is 0 which means this queue will accumulate as many messages as available resources allow.","required":false},{"name":"comparator","type":"string","description":" Allows you to specify the reference to the bean which implements java.util.Comparator\u0026lt;Message\u0026lt;?\u0026gt;\u0026gt; interface and provides logic based on which Messages will be prioritized. Not allowed if \u0027message-store\u0027 is set. ","required":false}]},{"occurrence":{"min":0},"name":"rendezvous-queue","description":"Defines a rendezvous queue where a sender will block until the receiver arrives or vice-versa."},{"occurrence":{"min":0},"name":"dispatcher","description":"Provides MessageDispatcher configuration (i.e., failover, load-balancing, task-executor)","attributes":[{"name":"failover","type":"string","description":"Specifies whether this dispatcher has failover enabled. By default, failover will be enabled. Set this to \u0027false\u0027 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 \u0027order\u0027 attribute on the Message Handlers (or the @Ordered annotation on adapted methods).","required":false},{"name":"load-balancer","type":"string","description":"Defines a load-balancing strategy for the channel\u0027s dispatcher. The default is a round-robin load balancer. This attribute is mutually exclusive with \u0027load-balancer-ref\u0027.","required":false,"restriction":{"type":"enum","values":["round-robin","none"]}},{"name":"task-executor","type":"string","description":"Provides the reference to a bean that implements org.springframework.core.task.TaskExecutor which is used when dispatching Messages to this channel\u0027s subscribers. Also, when using a TaskExecutor, keep in mind that any transaction active for the sender will NOT propagate to the handler invocation since the TaskExecutor dispatches to the handler on a separate Thread. Usually configured using the \u0027task\u0027 namespace support provided by Spring (e.g., \u003ctask:executor/\u003e).","required":false},{"name":"max-subscribers","type":"string","description":"Specifies the maximum subscribers allowed on this channel; defaults to Integer.MAX_VALUE, unless a \u0027channelInitializer\u0027 bean has previously been declared, with a different default.","required":false},{"name":"load-balancer-ref","type":"string","description":"A reference to a bean that implements the \u0027org.springframework.integration.dispatcher.LoadBalancingStrategy\u0027. This attribute is mutually exclusive with \u0027load-balancer\u0027.","required":false}]},{"occurrence":{"min":0},"name":"interceptors","description":"A list of ChannelInterceptor instances whose preSend and postSend methods will be applied to this channel. Note that the preReceive and postReceive methods have no effect for a SubscribableChannel instance.","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","attributes":[{"name":"bean","type":"string","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"wire-tap","description":"Allows you to configure a Wire Tap interceptor that will send a copy of the message to a channel identified by \u0027channel\u0027 attribute.","attributes":[{"name":"selector","type":"string","description":"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. Mutually exclusive with \u0027selector-expression\u0027.","required":false},{"name":"selector-expression","type":"string","description":"A boolean expression evaluated against the message to determine whether it should sent to the intercepting channel. Mutually exclusive with \u0027selector\u0027.","required":false},{"name":"channel","type":"string","required":true},{"name":"timeout","type":"string","description":"The timeout for sending the message to the intercepting channel","required":false},{"name":"id","type":"string","required":false}]}]}}]}},{"role":"transformer","connectionType":"passthru","name":"object-to-json-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.json.ObjectToJsonTransformer\u0027 that converts any Object payload to a JSON String.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"object-mapper","type":"string","description":"Optional reference to a JsonObjectMapper instance. By default, a JsonObjectMapper that uses a Jackson 2 ObjectMapper.","required":false},{"name":"id","type":"string","required":false},{"name":"result-type","type":"string","description":"The type of the JSON transformation result. \u0027STRING\u0027 and \u0027NODE\u0027 values are allowed. If \u0027NODE\u0027, the JSON result tree depends on the provided implementation of \u0027org.springframework.integration.support.json.JsonObjectMapper\u0027 (e.g. JsonNode for Jackson). The default value is \u0027STRING\u0027.","default":"STRING","required":false,"restriction":{"type":"enum","values":["STRING","NODE","BYTES"]}},{"name":"content-type","type":"string","description":"Allows you to set the \u0027content-type\u0027 Message header. When a \u0027content-type\u0027 header is already present on the input message, the transformer will only override that value IF this attribute is explicitly set (e.g., content-type\u003d\"text/x-json\"). If this attribute is omitted, the transformer will set the \u0027content-type\u0027 header to \"application/json\", when there is no existing \u0027content-type\u0027 header on the input message. Setting the attribute to an empty string (\"\") will suppress setting the header to the default value, but will not remove the header, if present on the input message. If you wish to remove an existing header, use a \u003cheader-filter/\u003e before or after the transformer.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"transaction-synchronization-factory","description":"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 \u0027expression\u0027 and/or \u0027channel\u0027 attributes. If only the \u0027channel\u0027 attribute is present the received Message will be sent there as part of a particular synchronization scenario. If only the \u0027expression\u0027 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 \u0027channel\u0027 attribute. If the result of an expression is null or void, no Message will be generated.","attributes":[{"name":"id","type":"string","required":true}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"before-commit","attributes":[{"name":"channel","type":"string","description":"Reference to a MessageChannel where the result or an expression or received Message wil be sent.","required":false},{"name":"expression","type":"string","description":"SpEL expression to be executed as part of Transaction synchronization","required":false}]},{"occurrence":{"min":0},"name":"after-commit","attributes":[{"name":"channel","type":"string","description":"Reference to a MessageChannel where the result or an expression or received Message wil be sent.","required":false},{"name":"expression","type":"string","description":"SpEL expression to be executed as part of Transaction synchronization","required":false}]},{"occurrence":{"min":0},"name":"after-rollback","attributes":[{"name":"channel","type":"string","description":"Reference to a MessageChannel where the result or an expression or received Message wil be sent.","required":false},{"name":"expression","type":"string","description":"SpEL expression to be executed as part of Transaction synchronization","required":false}]}]}},{"role":"router","connectionType":"content_based_router","name":"exception-type-router","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.router.ErrorMessageExceptionTypeRouter\u0027 which resolves the target MessageChannel for messages whose payload is an Exception. The channel resolution is based upon the most specific cause of the error for which a channel mapping exists.","attributes":[{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"max":-1},"name":"mapping","description":" Element defines the rules for this router to map the exception type of the payload to the corresponding channel. (e.g. \u003cint:mapping exception-type\u003d\u0027java.lang.NullPointerException\u0027 channel\u003d\u0027npeChannel\u0027/\u003e) The most specific matching exception type is determined by navigating the hierarchy of \u0027exception causes\u0027 (e.g., payload.getCause()).","attributes":[{"name":"channel","type":"string","description":"The channel the matching message will be send to. ","required":false},{"name":"exception-type","type":"string","description":"The exception type of the payload that this mapping will match, e.g. \u0027java.lang.IllegalArgumentException\u0027 ","required":false}]}]}}],"jms":[{"role":"channel","connectionType":"passthru","name":"publish-subscribe-channel","description":"Defines a Message Channel (\u0027org.springframework.integration.jms.config.JmsChannelFactoryBean\u0027) that is backed by a JMS Topic.","attributes":[{"name":"task-executor","type":"string","description":"A reference to a Spring TaskExecutor (or standard JDK 1.5+ Executor) for executing JMS listener invokers. Default is a SimpleAsyncTaskExecutor in case of a DefaultMessageListenerContainer, using internally managed threads. For a SimpleMessageListenerContainer, listeners will always get invoked within the JMS provider\u0027s receive thread by default.","required":false},{"name":"id","type":"string","description":"ID for this channel. Required.","required":true},{"name":"prefetch","type":"number","description":"The maximum number of messages to load into a single session. Note that raising this number might lead to starvation of concurrent consumers!","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"topic","type":"string","description":"Reference to a JMS Topic. Either this attribute or the \u0027topic-name\u0027 must be provided, but only one.","required":false},{"name":"subscription","type":"string","description":"The name for the durable or shared subscription, if any.","required":false},{"name":"concurrency","type":"string","description":"The number of concurrent sessions/consumers to start for each listener. Can either be a simple number indicating the maximum number (e.g. \"5\") or a range indicating the lower as well as the upper limit (e.g. \"3-5\"). Note that a specified minimum is just a hint and might be ignored at runtime. Default is 1; keep concurrency limited to 1 in case of a topic listener or if message ordering is important; consider raising it for general queues.","required":false},{"name":"time-to-live","type":"string","description":"Specify the message time to live. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"delivery-persistent","type":"string","description":"Specify a boolean value indicating whether the delivery mode should be DeliveryMode.PERSISTENT (true) or DeliveryMode.NON_PERSISTENT (false). This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"destination-resolver","type":"string","description":"A reference to the DestinationResolver strategy for resolving destination names. Default is a DynamicDestinationResolver, using the JMS provider\u0027s queue/topic name resolution. Alternatively, specify a reference to a JndiDestinationResolver (typically in a J2EE environment).","required":false},{"name":"explicit-qos-enabled","type":"string","description":"Setting this attribute to true enables the use of quality of service attributes - message priority, delivery mode, time to live.","required":false},{"name":"durable","type":"string","description":"Boolean value indicating whether the Topic subscription is durable.","required":false},{"name":"connection-factory","type":"string","description":"Reference to a JMS ConnectionFactory. If none is provided, the default bean name for the reference will be \"jmsConnectionFactory\".","required":false},{"name":"acknowledge","type":"string","description":"The native JMS acknowledge mode: \"auto\", \"client\", \"dups-ok\" or \"transacted\". A value of \"transacted\" effectively activates a locally transacted Session; alternatively, specify an external \"transaction-manager\" via the corresponding attribute. Default is \"transacted\".","default":"transacted","required":false,"restriction":{"type":"enum","values":["auto","client","dups-ok","transacted"]}},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"topic-name","type":"string","description":"Name of a JMS Topic to be resolved by this channel\u0027s DestinationResolver.","required":false},{"name":"container-type","type":"string","description":"The type of this listener container: \"default\" or \"simple\", choosing between DefaultMessageListenerContainer and SimpleMessageListenerContainer.","required":false,"restriction":{"type":"enum","values":["default","simple"]}},{"name":"cache","type":"string","description":"The cache level for JMS resources: \"none\", \"connection\", \"session\", \"consumer\" or \"auto\". By default (\"auto\"), the cache level will effectively be \"consumer\", unless an external transaction manager has been specified - in which case the effective default will be \"none\" (assuming J2EE-style transaction management where the given ConnectionFactory is an XA-aware pool).","required":false,"restriction":{"type":"enum","values":["none","connection","session","consumer","auto"]}},{"name":"priority","type":"string","description":"Specify the default priority of the message. Overridden by the message priority header, if present; range 0-9. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"max-subscribers","type":"string","description":"Specifies the maximum subscribers allowed on this channel; defaults to Integer.MAX_VALUE, unless a \u0027channelInitializer\u0027 bean has previously been declared, with a different default.","required":false},{"name":"receive-timeout","type":"string","description":"Timeout for the container\u0027s consumers if message-driven is TRUE, or timeout for receive calls on the template if message-driven is FALSE.","required":false},{"name":"transaction-manager","type":"string","description":"A reference to an external PlatformTransactionManager (typically an XA-based transaction coordinator, e.g. Spring\u0027s JtaTransactionManager). If not specified, native acknowledging will be used (see \"acknowledge\" attribute).","required":false},{"name":"error-handler","type":"string","description":"A reference to an ErrorHandler strategy for handling any uncaught Exceptions that may occur during the execution of the underlying MessageListener.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"container-class","type":"string","description":"A custom listener container implementation class as fully qualified class name. Default is Spring\u0027s standard DefaultMessageListenerContainer or SimpleMessageListenerContainer, according to the \"container-type\" attribute. Note that a custom container class will typically be a subclass of either of those two Spring-provided standard container classes: Make sure that the \"container-type\" attribute matches the actual base type that the custom class derives from (\"default\" will usually be fine anyway, since most custom classes will derive from DefaultMessageListenerContainer).","required":false},{"name":"client-id","type":"string","description":"The JMS client id. Should be specified when using durable subscriptions.","required":false},{"name":"selector","type":"string","description":"The JMS message selector for this channel\u0027s underlying MessageListener.","required":false},{"name":"subscription-shared","type":"string","description":"Boolean property indicating whether to make the subscription shared. The shared subscription name to be used can be specified through the \u0027subscription\u0027 attribute. Default is \"false\". Set this to \"true\" to register a shared subscription. Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with \u0027durable\u0027 as well. Requires a JMS 2.0 compatible message broker.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"interceptors","description":"A list of ChannelInterceptor instances to be applied to this channel.","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","attributes":[{"name":"bean","type":"string","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"wire-tap","description":"Allows you to configure a Wire Tap interceptor that will send a copy of the message to a channel identified by \u0027channel\u0027 attribute.","attributes":[{"name":"selector","type":"string","description":"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. Mutually exclusive with \u0027selector-expression\u0027.","required":false},{"name":"selector-expression","type":"string","description":"A boolean expression evaluated against the message to determine whether it should sent to the intercepting channel. Mutually exclusive with \u0027selector\u0027.","required":false},{"name":"channel","type":"string","required":true},{"name":"timeout","type":"string","description":"The timeout for sending the message to the intercepting channel","required":false},{"name":"id","type":"string","required":false}]}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"header-enricher","description":"Defines a \u0027org.springframework.integration.transformer.HeaderEnricher\u0027 for adding statically configured JMS Headers.","attributes":[{"name":"output-channel","type":"string","required":false},{"name":"input-channel","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"default-overwrite","type":"boolean","description":"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 \u0027overwrite\u0027 attribute. If the \u0027default-overwrite\u0027 attribute is not provided, then the specified header values will NOT overwrite any existing ones with the same header names.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"max":-1},"children":[{"name":"reply-to","description":"The ReplyTo Destination for the JMS Message.","attributes":[{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false},{"name":"ref","type":"string","required":false}]},{"name":"correlation-id","description":"The Correlation ID for the JMS Message.","attributes":[{"name":"expression","type":"string","required":false},{"name":"value","type":"string","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false},{"name":"ref","type":"string","required":false}]},{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"request_reply","name":"outbound-gateway","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.jms.JmsSendingMessageHandler\u0027 to send messages to the JMS destination and wait for replies.","attributes":[{"name":"requires-reply","type":"string","description":"Specify whether this outbound gateway must return a non-null value. This value is \u0027true\u0027 by default, and a ReplyRequiredException will be thrown when the underlying service returns a null value.","default":"true","required":false},{"name":"idle-reply-listener-timeout","type":"string","description":"When using a \u0027reply-listener\u0027, specify whether the container should be started on-demand and stopped when idle for this time (in seconds). When omitted (or \u003c\u003d 0), the reply container is started/stopped according to the gateway\u0027s lifecycle.","required":false},{"name":"request-channel","type":"string","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"async","type":"string","description":"When false (default), the requesting thread is suspended until a reply is received or a timeout occurs; when true, the requesting thread is released and the reply is returned on the listener container thread. Requires a reply-listener child element and a \u0027correlation-key\u0027; otherwise this property is ignored.","required":false},{"name":"id","type":"string","required":false},{"name":"request-destination-expression","type":"string","description":"A SpEL expression to be evaluated at runtime against each Spring Integration request Message as the root object. The result should be either a Destination instance or a String representing the destination name. In the latter case, it will be passed to this adapter\u0027s DestinationResolver. This attribute is mutually exclusive with \u0027request-destination\u0027 and \u0027request-destination-name\u0027.","required":false},{"name":"reply-channel","type":"string","required":false},{"name":"request-pub-sub-domain","type":"string","description":"When resolving a request destination name (rather than a \u0027request-destination\u0027 reference or a \u0027request-destination-expression\u0027 that evaluates to a destination), a true value here specifies that the DestinationResolver should resolve Topics rather than Queues. Default is false.","required":false},{"name":"extract-request-payload","type":"string","description":"When \u0027true\u0027 (default), this attribute indicates that the JMS Message body will be created (by the MessageConverter) from the Spring Integration Message\u0027s payload. When \u0027false\u0027, the entire Spring Integration Message will be converted to the JMS Message body. In both cases, the message headers will be mapped to JMS headers/properties by the HeaderMapper.","default":"true","required":false},{"name":"correlation-key","type":"string","description":"Provide the name of a JMS property that should hold a generated UUID that the receiver of the JMS Message would expect to represent the CorrelationID. When waiting for the reply Message, a MessageSelector will be configured to match this property name and the UUID value that was sent in the request. If NO value is provided for this attribute, then the reply consumer\u0027s MessageSelector will be expecting the JMSCorrelationID to equal the Message ID of the request. If you want to store the outbound correlation UUID value in the actual \"JMSCorrelationID\" property, then set this value to \"JMSCorrelationID\". However, any other value will be treated as a JMS String Property. Note: when using a \u003creply-container/\u003e the correlation data includes a UUID representing the gateway as well as a message identifier. For this reason, the use of a \u003creply-container/\u003e requires the specification of a \u0027correlation-key\u0027 if an explicit reply-destination is provided.","required":false},{"name":"time-to-live","type":"string","description":"Specify the message time to live. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"reply-destination-name","type":"string","description":"Name of a destination which will be used for the replyTo header. This name will be handled by this gateway\u0027s DestinationResolver. This attribute is mutually exclusive with \u0027reply-destination\u0027 and \u0027reply-destination-expression\u0027.","required":false},{"name":"delivery-persistent","type":"string","description":"Specify a boolean value indicating whether the delivery mode should be DeliveryMode.PERSISTENT (true) or DeliveryMode.NON_PERSISTENT (false). This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"explicit-qos-enabled","type":"string","description":"Setting this attribute to true enables the use of quality of service attributes - message priority, delivery mode, time to live.","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds.","required":false},{"name":"header-mapper","type":"string","description":" A reference to an implementation of JmsHeaderMapper to map Message Headers to JMS Message. Default is a \u0027DefaultJmsHeaderMapper\u0027. ","required":false},{"name":"destination-resolver","type":"string","description":"A reference to the DestinationResolver strategy for resolving Destination names to Destination objects. Used when a reqest/reply destination name is provided, or an expression that resolves to a name. Default is a DynamicDestinationResolver.","required":false},{"name":"reply-destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use \u0027reply-destination-name\u0027 and \u0027reply-pub-sub-domain\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default). This attribute is mutually exclusive with \u0027reply-destination-name\u0027 and \u0027reply-destination-expression\u0027.","required":false},{"name":"priority","type":"string","description":"Specify the default priority of the message. Overridden by the message priority header, if present; range 0-9 This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"reply-pub-sub-domain","type":"string","description":"When resolving a reply destination name (rather than a \u0027reply-destination\u0027 reference or a \u0027reply-destination-expression\u0027 that evaluates to a destination), a true value here specifies that the DestinationResolver should resolve Topics rather than Queues. Default is false.","required":false},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"reply-destination-expression","type":"string","description":"A SpEL expression to be evaluated at runtime against each Spring Integration request Message as the root object. The result should be either a Destination instance or a String representing the destination name. In the latter case, it will be passed to this adapter\u0027s DestinationResolver together with the reply-pub-sub-domain attribute. This attribute is mutually exclusive with \u0027reply-destination\u0027 and \u0027reply-destination-name\u0027.","required":false},{"name":"request-destination-name","type":"string","description":"Name of a destination to which request messages will be sent. This name will be handled by this gateway\u0027s DestinationResolver. This attribute is mutually exclusive with \u0027request-destination\u0027 and \u0027request-destination-expression\u0027.","required":false},{"name":"receive-timeout","type":"string","description":"Timeout for the JMS MessageConsumer to receive the JMS reply Message. Default is 5 seconds.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"request-destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use \u0027request-destination-name\u0027 and \u0027request-pub-sub-domain\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default). This attribute is mutually exclusive with \u0027request-destination-name\u0027 and \u0027request-destination-expression\u0027.","required":false},{"name":"extract-reply-payload","type":"string","description":"When \u0027true\u0027 (default), this attribute indicates that the payload of the Spring Integration reply message will be created from the \u0027JMS Message\u0027 body (by the MessageConverter). When \u0027false\u0027, the Spring Integration Message payload will be the entire JMS Message. In both cases, the JMS Message headers/properties will be mapped to message headers by the HeaderMapper.","default":"true","required":false},{"name":"connection-factory","type":"string","description":"The name of a ConnectionFactory bean. Default is \u0027connectionFactory\u0027.","default":"jmsConnectionFactory","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this gateway is connected as a subscriber to a SubscribableChannel.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}},{"occurrence":{"min":0},"name":"reply-listener","description":"Configures the gateway to use an asynchronous listener container to receive reply messages.","attributes":[{"name":"max-concurrent-consumers","type":"string","description":"Specify the maximum number of concurrent consumers to create. Default is 1. If this setting is higher than \"concurrentConsumers\", the listener container will dynamically schedule new consumers at runtime, provided that enough incoming messages are encountered. Once the load goes down again, the number of consumers will be reduced to the standard level (\"concurrentConsumers\") again. Raising the number of concurrent consumers is recommendable in order to scale the consumption of messages coming in from a queue. However, note that any ordering guarantees are lost once multiple consumers are registered.","required":false},{"name":"idle-consumer-limit","type":"string","description":"Specify the limit for the number of consumers that are allowed to be idle at any given time. This limit is used to determine if a new invoker should be created. Increasing the limit causes invokers to be created more aggressively. This can be useful to ramp up the number of invokers faster. The default is 1, only scheduling a new invoker (which is likely to be idle initially) if none of the existing invokers is currently idle.","required":false},{"name":"max-messages-per-task","type":"string","description":"Specify the maximum number of messages to process in one task. More concretely, this limits the number of message reception attempts per task, which includes receive iterations that did not actually pick up a message until they hit their timeout","required":false},{"name":"concurrent-consumers","type":"string","description":"Specify the number of concurrent consumers to create. Default is 1. Specifying a higher value for this setting will increase the standard level of scheduled concurrent consumers at runtime: This is effectively the minimum number of concurrent consumers which will be scheduled at any given time. This is a static setting; for dynamic scaling, consider specifying the \"maxConcurrentConsumers\" setting instead. Raising the number of concurrent consumers is recommendable in order to scale the consumption of messages coming in from a queue. However, note that any ordering guarantees are lost once multiple consumers are registered","required":false},{"name":"idle-task-execution-limit","type":"string","description":"Specify the limit for idle executions of a consumer task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks. The default is 1, closing idle resources early once a task didn\u0027t receive a message.","required":false},{"name":"acknowledge","type":"string","description":"The native JMS acknowledge mode: \"auto\", \"client\", \"dups-ok\" or \"transacted\". The latter effectively activates a locally transacted Session.","required":false,"restriction":{"type":"enum","values":["auto","client","dups-ok","transacted"]}},{"name":"recovery-interval","type":"string","description":"Interval in milliseconds between the recovery attempts","required":false},{"name":"cache-level","type":"string","description":"Specify the level of caching that this listener container is allowed to apply: CACHE_NONE \u003d 0 CACHE_CONNECTION \u003d 1 CACHE_SESSION \u003d 2 CACHE_CONSUMER \u003d 3","required":false},{"name":"task-executor","type":"string","description":"A reference to a Spring TaskExecutor (or standard JDK 1.5+ Executor) for receiving the replies and handing them over to the sending thread. Default is a SimpleAsyncTaskExecutor.","required":false},{"name":"receive-timeout","type":"string","required":false}]}]}},{"role":"endpoint","connectionType":"source","name":"inbound-channel-adapter","description":"Defines a Polling Channel Adapter for the \u0027org.springframework.integration.jms.JmsDestinationPollingSource\u0027 for polling a JMS Destination.","attributes":[{"name":"destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use \u0027destination-name\u0027 and \u0027pub-sub-domain\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default).","required":false},{"name":"extract-payload","type":"string","default":"true","required":false},{"name":"pub-sub-domain","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Timeout for receive calls on the template. NOTE: for JmsTemplate, 0 means indefinite while -1 means no-wait.","required":false},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"header-mapper","type":"string","required":false},{"name":"destination-name","type":"string","required":false},{"name":"acknowledge","type":"string","description":"The native JMS acknowledge mode: \"auto\", \"client\", \"dups-ok\" or \"transacted\". The latter effectively activates a locally transacted Session. \u0027transacted\u0027 is not allowed on the inbound-channel-adapter; use \u0027session-transacted\u0027 instead. acknowlege\u003d\"transacted\" is used on the message-driven-channel-adapter and inbound gateway. Defaults to \"transacted\" when an implicit message listener container is configured. Not allowed when using an externally configured listener container; configure the container instead.","required":false,"restriction":{"type":"enum","values":["auto","client","dups-ok","transacted"]}},{"name":"id","type":"string","required":false},{"name":"connection-factory","type":"string","required":false},{"name":"channel","type":"string","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"jms-template","type":"string","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"session-transacted","type":"string","description":"Setting this attribute to true enables transactions. Cannot be specified if a jms-template is specified. Default false.","required":false},{"name":"destination-resolver","type":"string","required":false},{"name":"selector","type":"string","description":"A JMS Message Selector expression.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.jms.JmsSendingMessageHandler\u0027 to send messages to the JMS destination without waiting for replies.","attributes":[{"name":"explicit-qos-enabled","type":"string","description":"Setting this attribute to true enables the use of quality of service attributes - message priority, delivery mode, time to live.","required":false},{"name":"extract-payload","type":"string","default":"true","required":false},{"name":"pub-sub-domain","type":"string","description":"If true, specifies that destination names should resolve to Topics rather than Queues. Default is false.","required":false},{"name":"destination-expression","type":"string","description":"A SpEL expression to be evaluated at runtime against each Spring Integration Message as the root object. The result should be either a Destination instance or a String representing the destination name. In the latter case, it will be passed to this adapter\u0027s DestinationResolver. If the evaluation result is null, messages will be sent to the default destination of the underlying JmsTemplate. This attribute is mutually exclusive with \u0027destination\u0027 and \u0027destination-name\u0027.","required":false},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"header-mapper","type":"string","required":false},{"name":"destination-name","type":"string","description":"Name of the destination to which JMS Messages will be sent. This will be passed to the adapter\u0027s DestinationResolver. This attribute is mutually exclusive with \u0027destination\u0027 and \u0027destination-expression\u0027.","required":false},{"name":"priority","type":"string","description":"Specify the default priority of the message. Overridden by the message priority header, if present; range 0-9. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"delivery-mode-expression","type":"string","description":"A SpEL expression to be evaluated at runtime against each Spring Integration Message as the root object. The result should be an integer representing the delivery mode. If returns null, falls back to the \u0027delivery-persistent\u0027 or default. The explicit-qos-enabled has to be enabled. Note: the static delivery mode value can be specified on the JmsTemplate.","required":false},{"name":"id","type":"string","required":false},{"name":"time-to-live-expression","type":"string","description":"A SpEL expression to be evaluated at runtime against each Spring Integration Message as the root object. The result should be a long representing the time-to-live for the message. If returns null, falls back to the \u0027time-to-live\u0027 or default. The \u0027explicit-qos-enabled\u0027 has to be enabled. Note: the static time-to-live value can be specified on the JmsTemplate.","required":false},{"name":"connection-factory","type":"string","required":false},{"name":"channel","type":"string","required":false},{"name":"session-transacted","type":"string","description":"Setting this attribute to true enables transactions for the message send. If there is already a JMS transaction in process, perhaps from a message-driven-channel-adapter upstream, the same transaction is used; otherwise a new transaction is started. Cannot be specified if a jms-template is specified. Default false.","required":false},{"name":"destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use \u0027destination-name\u0027 and \u0027pub-sub-domain\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default). This attribute is mutually exclusive with \u0027destination-name\u0027 and \u0027destination-expression\u0027.","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this adapter is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"jms-template","type":"string","required":false},{"name":"time-to-live","type":"string","description":"Specify the message time to live. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"delivery-persistent","type":"string","description":"Specify a boolean value indicating whether the delivery mode should be DeliveryMode.PERSISTENT (true) or DeliveryMode.NON_PERSISTENT (false). This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"destination-resolver","type":"string","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"source","name":"message-driven-channel-adapter","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.jms.JmsMessageDrivenEndpoint\u0027 (one-way) to listen form message on the JMS destination.","attributes":[{"name":"destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use \u0027destination-name\u0027 and \u0027pub-sub-domain\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default).","required":false},{"name":"concurrent-consumers","type":"string","description":"Specify the number of concurrent consumers to create. Default is 1. Specifying a higher value for this setting will increase the standard level of scheduled concurrent consumers at runtime: This is effectively the minimum number of concurrent consumers which will be scheduled at any given time. This is a static setting; for dynamic scaling, consider specifying the \"maxConcurrentConsumers\" setting instead. Raising the number of concurrent consumers is recommendable in order to scale the consumption of messages coming in from a queue. However, note that any ordering guarantees are lost once multiple consumers are registered","required":false},{"name":"recovery-interval","type":"string","description":"Interval in milliseconds between the recovery attempts","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"acknowledge","type":"string","description":"The native JMS acknowledge mode: \"auto\", \"client\", \"dups-ok\" or \"transacted\". The latter effectively activates a locally transacted Session. \u0027transacted\u0027 is not allowed on the inbound-channel-adapter; use \u0027session-transacted\u0027 instead. acknowlege\u003d\"transacted\" is used on the message-driven-channel-adapter and inbound gateway. Defaults to \"transacted\" when an implicit message listener container is configured. Not allowed when using an externally configured listener container; configure the container instead.","required":false,"restriction":{"type":"enum","values":["auto","client","dups-ok","transacted"]}},{"name":"id","type":"string","required":false},{"name":"connection-factory","type":"string","required":false},{"name":"channel","type":"string","required":false},{"name":"client-id","type":"string","description":"The JMS client id for a shared Connection created and used by this container. Note that client ids need to be unique among all active Connections of the underlying JMS provider. Furthermore, a client id can only be assigned if the original ConnectionFactory hasn\u0027t already assigned one.","required":false},{"name":"task-executor","type":"string","description":"A reference to a Spring TaskExecutor (or standard JDK 1.5+ Executor) for running the listener threads. Default for the message listener container is a SimpleAsyncTaskExecutor.","required":false},{"name":"subscription-durable","type":"string","description":"Boolean property indicating whether to make the subscription durable. The durable subscription name to be used can be specified through the \"durableSubscriptionName\" property. Default is \"false\". Set this to \"true\" to register a durable subscription, typically in combination with a \"durableSubscriptionName\" value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain).","required":false},{"name":"max-concurrent-consumers","type":"string","description":"Specify the maximum number of concurrent consumers to create. Default is 1. If this setting is higher than \"concurrentConsumers\", the listener container will dynamically schedule new consumers at runtime, provided that enough incoming messages are encountered. Once the load goes down again, the number of consumers will be reduced to the standard level (\"concurrentConsumers\") again. Raising the number of concurrent consumers is recommendable in order to scale the consumption of messages coming in from a queue. However, note that any ordering guarantees are lost once multiple consumers are registered.","required":false},{"name":"pub-sub-domain","type":"string","description":"The boolean property used to configure the listener container with knowledge of what JMS domain is being used. Unless \u0027subscription-shared\u0027 or \u0027subscription-durable\u0027 is true, by default the value of this property is \u0027false\u0027 , indicating that the point-to-point domain, Queues, will be used. When true, the pub/sub domain, Topics, will be used.","required":false},{"name":"subscription-shared","type":"string","description":"Boolean property indicating whether to make the subscription shared. The shared subscription name to be used can be specified through the \u0027subscription-name\u0027 attribute. Default is \"false\". Set this to \"true\" to register a shared subscription, typically in combination with a \u0027subscription-name\u0027 value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with \u0027subscription-durable\u0027 as well. Only makes sense when listening to a topic (pub-sub domain), therefore this automatically sets \u0027pub-sub-domain\u0027 to \u0027true\u0027. Requires a JMS 2.0 compatible message broker.","required":false},{"name":"idle-task-execution-limit","type":"string","description":"Specify the limit for idle executions of a consumer task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks. The default is 1, closing idle resources early once a task didn\u0027t receive a message.","required":false},{"name":"container-class","type":"string","description":"A custom listener container implementation class as fully qualified class name. Default is Spring\u0027s standard DefaultMessageListenerContainer. Note that a custom container class will typically be a subclass of this standard container class. This attribute is mutually exclusive with \u0027container\u0027.","required":false},{"name":"transaction-manager","type":"string","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"container","type":"string","description":"A reference to a custom listener container implementation. Note that a custom container class will typically be a subclass of DefaultMessageListenerContainer. This attribute is mutually exclusive with \u0027container-class\u0027.","required":false},{"name":"subscription-name","type":"string","description":"The name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client\u0027s JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of the message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0).","required":false},{"name":"error-channel","type":"string","description":"If a (synchronous) downstream exception is thrown and an error-channel is specified, the MessagingException will be sent to this channel. Otherwise, any such exception will be propagated to the listener container and any JMS transaction will be rolled back. Any synchronous downstream exceptions in the error flow will also cause any JMS transaction to be rolled back.","required":false},{"name":"extract-payload","type":"string","default":"true","required":false},{"name":"max-messages-per-task","type":"string","description":"Specify the maximum number of messages to process in one task. More concretely, this limits the number of message reception attempts per task, which includes receive iterations that did not actually pick up a message until they hit their timeout","required":false},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"header-mapper","type":"string","required":false},{"name":"destination-name","type":"string","required":false},{"name":"idle-consumer-limit","type":"string","description":"Specify the limit for the number of consumers that are allowed to be idle at any given time. This limit is used to determine if a new invoker should be created. Increasing the limit causes invokers to be created more aggressively. This can be useful to ramp up the number of invokers faster. The default is 1, only scheduling a new invoker (which is likely to be idle initially) if none of the existing invokers is currently idle.","required":false},{"name":"send-timeout","type":"string","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"cache-level","type":"string","description":"Specify the level of caching that this listener container is allowed to apply: CACHE_NONE \u003d 0 CACHE_CONNECTION \u003d 1 CACHE_SESSION \u003d 2 CACHE_CONSUMER \u003d 3","required":false},{"name":"receive-timeout","type":"string","required":false},{"name":"destination-resolver","type":"string","required":false},{"name":"selector","type":"string","description":"A JMS Message Selector expression.","required":false}]},{"role":"channel","connectionType":"passthru","name":"channel","description":"Defines a Message Channel (\u0027org.springframework.integration.jms.config.JmsChannelFactoryBean\u0027) that is backed by a JMS Queue.","attributes":[{"name":"queue-name","type":"string","description":"Name of a JMS Queue to be resolved by this channel\u0027s DestinationResolver.","required":false},{"name":"task-executor","type":"string","description":"A reference to a Spring TaskExecutor (or standard JDK 1.5+ Executor) for executing JMS listener invokers. Default is a SimpleAsyncTaskExecutor in case of a DefaultMessageListenerContainer, using internally managed threads. For a SimpleMessageListenerContainer, listeners will always get invoked within the JMS provider\u0027s receive thread by default.","required":false},{"name":"id","type":"string","description":"ID for this channel. Required.","required":true},{"name":"prefetch","type":"number","description":"The maximum number of messages to load into a single session. Note that raising this number might lead to starvation of concurrent consumers!","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"concurrency","type":"string","description":"The number of concurrent sessions/consumers to start for each listener. Can either be a simple number indicating the maximum number (e.g. \"5\") or a range indicating the lower as well as the upper limit (e.g. \"3-5\"). Note that a specified minimum is just a hint and might be ignored at runtime. Default is 1; keep concurrency limited to 1 in case of a topic listener or if message ordering is important; consider raising it for general queues.","required":false},{"name":"time-to-live","type":"string","description":"Specify the message time to live. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"delivery-persistent","type":"string","description":"Specify a boolean value indicating whether the delivery mode should be DeliveryMode.PERSISTENT (true) or DeliveryMode.NON_PERSISTENT (false). This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"destination-resolver","type":"string","description":"A reference to the DestinationResolver strategy for resolving destination names. Default is a DynamicDestinationResolver, using the JMS provider\u0027s queue/topic name resolution. Alternatively, specify a reference to a JndiDestinationResolver (typically in a J2EE environment).","required":false},{"name":"message-driven","type":"boolean","description":"Specifies whether this channel should be Message-Driven. The value is \"true\" by default. Set to \"false\" if this channel should be pollable.","default":"true","required":false},{"name":"explicit-qos-enabled","type":"string","description":"Setting this attribute to true enables the use of quality of service attributes - message priority, delivery mode, time to live.","required":false},{"name":"connection-factory","type":"string","description":"Reference to a JMS ConnectionFactory. If none is provided, the default bean name for the reference will be \"jmsConnectionFactory\".","required":false},{"name":"acknowledge","type":"string","description":"The native JMS acknowledge mode: \"auto\", \"client\", \"dups-ok\" or \"transacted\". A value of \"transacted\" effectively activates a locally transacted Session; alternatively, specify an external \"transaction-manager\" via the corresponding attribute. Default is \"transacted\".","default":"transacted","required":false,"restriction":{"type":"enum","values":["auto","client","dups-ok","transacted"]}},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"container-type","type":"string","description":"The type of this listener container: \"default\" or \"simple\", choosing between DefaultMessageListenerContainer and SimpleMessageListenerContainer.","required":false,"restriction":{"type":"enum","values":["default","simple"]}},{"name":"cache","type":"string","description":"The cache level for JMS resources: \"none\", \"connection\", \"session\", \"consumer\" or \"auto\". By default (\"auto\"), the cache level will effectively be \"consumer\", unless an external transaction manager has been specified - in which case the effective default will be \"none\" (assuming J2EE-style transaction management where the given ConnectionFactory is an XA-aware pool).","required":false,"restriction":{"type":"enum","values":["none","connection","session","consumer","auto"]}},{"name":"priority","type":"string","description":"Specify the default priority of the message. Overridden by the message priority header, if present; range 0-9. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"max-subscribers","type":"string","description":"Specifies the maximum subscribers allowed on this channel; defaults to Integer.MAX_VALUE, unless a \u0027channelInitializer\u0027 bean has previously been declared, with a different default.","required":false},{"name":"receive-timeout","type":"string","description":"Timeout for the container\u0027s consumers if message-driven is TRUE, or timeout for receive calls on the template if message-driven is FALSE.","required":false},{"name":"transaction-manager","type":"string","description":"A reference to an external PlatformTransactionManager (typically an XA-based transaction coordinator, e.g. Spring\u0027s JtaTransactionManager). If not specified, native acknowledging will be used (see \"acknowledge\" attribute).","required":false},{"name":"error-handler","type":"string","description":"A reference to an ErrorHandler strategy for handling any uncaught Exceptions that may occur during the execution of the underlying MessageListener.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"container-class","type":"string","description":"A custom listener container implementation class as fully qualified class name. Default is Spring\u0027s standard DefaultMessageListenerContainer or SimpleMessageListenerContainer, according to the \"container-type\" attribute. Note that a custom container class will typically be a subclass of either of those two Spring-provided standard container classes: Make sure that the \"container-type\" attribute matches the actual base type that the custom class derives from (\"default\" will usually be fine anyway, since most custom classes will derive from DefaultMessageListenerContainer).","required":false},{"name":"selector","type":"string","description":"The JMS message selector for this channel\u0027s underlying MessageListener.","required":false},{"name":"queue","type":"string","description":"Reference to a JMS Queue. Either this attribute or the \u0027queue-name\u0027 must be provided, but only one.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"interceptors","description":"A list of ChannelInterceptor instances to be applied to this channel.","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","attributes":[{"name":"bean","type":"string","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"wire-tap","description":"Allows you to configure a Wire Tap interceptor that will send a copy of the message to a channel identified by \u0027channel\u0027 attribute.","attributes":[{"name":"selector","type":"string","description":"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. Mutually exclusive with \u0027selector-expression\u0027.","required":false},{"name":"selector-expression","type":"string","description":"A boolean expression evaluated against the message to determine whether it should sent to the intercepting channel. Mutually exclusive with \u0027selector\u0027.","required":false},{"name":"channel","type":"string","required":true},{"name":"timeout","type":"string","description":"The timeout for sending the message to the intercepting channel","required":false},{"name":"id","type":"string","required":false}]}]}}]}},{"role":"endpoint","connectionType":"request_reply","name":"inbound-gateway","description":"Defines a Messaging Gateway Endpoint for the \u0027org.springframework.integration.jms.JmsMessageDrivenEndpoint\u0027 to listen for messages in the JMS destination and produce replies.","attributes":[{"name":"reply-timeout","type":"string","required":false},{"name":"request-timeout","type":"string","required":false},{"name":"extract-reply-payload","type":"string","default":"true","required":false},{"name":"concurrent-consumers","type":"string","description":"Specify the number of concurrent consumers to create. Default is 1. Specifying a higher value for this setting will increase the standard level of scheduled concurrent consumers at runtime: This is effectively the minimum number of concurrent consumers which will be scheduled at any given time. This is a static setting; for dynamic scaling, consider specifying the \"maxConcurrentConsumers\" setting instead. Raising the number of concurrent consumers is recommendable in order to scale the consumption of messages coming in from a queue. However, note that any ordering guarantees are lost once multiple consumers are registered","required":false},{"name":"explicit-qos-enabled-for-replies","type":"string","required":false},{"name":"recovery-interval","type":"string","description":"Interval in milliseconds between the recovery attempts","required":false},{"name":"error-channel","type":"string","description":"If a (synchronous) downstream exception is thrown and an \"error-channel\" is specified, the MessagingException will be sent to this channel; any response from which will be returned as a reply by the gateway. If an \"error-channel\" is not supplied, any such exception will be propagated to the listener container and any JMS transaction will be rolled back. Any synchronous downstream exceptions in the error flow will also cause any JMS transaction to be rolled back.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"reply-time-to-live","type":"string","required":false},{"name":"acknowledge","type":"string","description":"The native JMS acknowledge mode: \"auto\", \"client\", \"dups-ok\" or \"transacted\". The latter effectively activates a locally transacted Session. \u0027transacted\u0027 is not allowed on the inbound-channel-adapter; use \u0027session-transacted\u0027 instead. acknowlege\u003d\"transacted\" is used on the message-driven-channel-adapter and inbound gateway. Defaults to \"transacted\" when an implicit message listener container is configured. Not allowed when using an externally configured listener container; configure the container instead.","required":false,"restriction":{"type":"enum","values":["auto","client","dups-ok","transacted"]}},{"name":"request-channel","type":"string","required":true},{"name":"id","type":"string","required":false},{"name":"request-destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use \u0027request-destination-name\u0027 and \u0027request-pub-sub-domain\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default).","required":false},{"name":"connection-factory","type":"string","required":false},{"name":"reply-channel","type":"string","required":false},{"name":"client-id","type":"string","description":"The JMS client id for a shared Connection created and used by this container. Note that client ids need to be unique among all active Connections of the underlying JMS provider. Furthermore, a client id can only be assigned if the original ConnectionFactory hasn\u0027t already assigned one.","required":false},{"name":"subscription-durable","type":"string","description":"Boolean property indicating whether to make the subscription durable. The durable subscription name to be used can be specified through the \"durableSubscriptionName\" property. Default is \"false\". Set this to \"true\" to register a durable subscription, typically in combination with a \"durableSubscriptionName\" value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain).","required":false},{"name":"max-concurrent-consumers","type":"string","description":"Specify the maximum number of concurrent consumers to create. Default is 1. If this setting is higher than \"concurrentConsumers\", the listener container will dynamically schedule new consumers at runtime, provided that enough incoming messages are encountered. Once the load goes down again, the number of consumers will be reduced to the standard level (\"concurrentConsumers\") again. Raising the number of concurrent consumers is recommendable in order to scale the consumption of messages coming in from a queue. However, note that any ordering guarantees are lost once multiple consumers are registered.","required":false},{"name":"idle-task-execution-limit","type":"string","description":"Specify the limit for idle executions of a consumer task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks. The default is 1, closing idle resources early once a task didn\u0027t receive a message.","required":false},{"name":"extract-request-payload","type":"string","default":"true","required":false},{"name":"reply-delivery-persistent","type":"string","required":false},{"name":"container-class","type":"string","description":"A custom listener container implementation class as fully qualified class name. Default is Spring\u0027s standard DefaultMessageListenerContainer. Note that a custom container class will typically be a subclass of this standard container class. This attribute is mutually exclusive with \u0027container\u0027.","required":false},{"name":"transaction-manager","type":"string","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"request-pub-sub-domain","type":"string","required":false},{"name":"container","type":"string","description":"A reference to a custom listener container implementation. Note that a custom container class will typically be a subclass of DefaultMessageListenerContainer. This attribute is mutually exclusive with \u0027container-class\u0027.","required":false},{"name":"subscription-name","type":"string","description":"The name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client\u0027s JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of the message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0).","required":false},{"name":"reply-priority","type":"string","required":false},{"name":"default-reply-topic-name","type":"string","required":false},{"name":"max-messages-per-task","type":"string","description":"Specify the maximum number of messages to process in one task. More concretely, this limits the number of message reception attempts per task, which includes receive iterations that did not actually pick up a message until they hit their timeout","required":false},{"name":"subscription-shared","type":"string","description":"Boolean property indicating whether to make the subscription shared. The shared subscription name to be used can be specified through the \u0027subscription-name\u0027 attribute. Default is \"false\". Set this to \"true\" to register a shared subscription, typically in combination with a \u0027subscription-name\u0027 value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with \u0027subscription-durable\u0027 as well. Only makes sense when listening to a topic (pub-sub domain), therefore this automatically sets \u0027request-pub-sub-domain\u0027 to \u0027true\u0027. Requires a JMS 2.0 compatible message broker.","required":false},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"correlation-key","type":"string","description":"Provide the name of a JMS property that should be copied from the request Message to the reply Message. If NO value is provided for this attribute then the JMSMessageID from the request will be copied into the JMSCorrelationID of the reply unless there is already a value in the JMSCorrelationID property of the newly created reply Message in which case nothing will be copied. If the JMSCorrelationID of the request Message should be copied into the JMSCorrelationID of the reply Message instead, then this value should be set to \"JMSCorrelationID\". Any other value will be treated as a JMS String Property to be copied as-is from the request Message into the reply Message with the same property name.","required":false},{"name":"default-reply-destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use either \u0027default-reply-queue-name\u0027 or \u0027default-reply-topic-name\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default).","required":false},{"name":"idle-consumer-limit","type":"string","description":"Specify the limit for the number of consumers that are allowed to be idle at any given time. This limit is used to determine if a new invoker should be created. Increasing the limit causes invokers to be created more aggressively. This can be useful to ramp up the number of invokers faster. The default is 1, only scheduling a new invoker (which is likely to be idle initially) if none of the existing invokers is currently idle.","required":false},{"name":"header-mapper","type":"string","description":" Allows to specify custom implementation of JmsHeaderMapper to map Message Headers to JMS Message. ","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"cache-level","type":"string","description":"Specify the level of caching that this listener container is allowed to apply: CACHE_NONE \u003d 0 CACHE_CONNECTION \u003d 1 CACHE_SESSION \u003d 2 CACHE_CONSUMER \u003d 3","required":false},{"name":"receive-timeout","type":"string","required":false},{"name":"destination-resolver","type":"string","required":false},{"name":"request-destination-name","type":"string","required":false},{"name":"default-reply-queue-name","type":"string","required":false},{"name":"selector","type":"string","description":"A JMS Message Selector expression.","required":false}]}],"kafka":[{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Defines the Consumer Endpoint for the KafkaProducerMessageHandler that writes the contents of the Message to kafka broker.","attributes":[{"name":"channel","type":"string","description":"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).","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"message-key","type":"string","description":"Specifies the Key for the Kafka message. This attribute is mutually exclusive with \u0027message-key-expression\u0027 attribute.","required":false},{"name":"send-timeout","type":"number","description":"Specifies a timeout in milliseconds for how long the \u0027KafkaProducerMessageHandler\u0027 should wait wait for send operation results. Defaults to 10 seconds. The timeout is applied only in \u0027sync\u0027 mode.","required":false},{"name":"id","type":"string","required":false},{"name":"order","type":"number","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"send-success-channel","type":"string","description":"Specifies the channel to which message with a payload of type \u0027org.apache.kafka.clients.producer.RecordMetadata\u0027 will be sent after a successful send.","required":false},{"name":"send-timeout-expression","type":"string","description":"Specifies an expression that is evaluated to determine a timeout in milliseconds for how long the \u0027KafkaProducerMessageHandler\u0027 should wait wait for send operation results. Defaults to 10 seconds. The timeout is applied only in \u0027sync\u0027 mode.","required":false},{"name":"topic-expression","type":"string","description":"Specifies the expression to determine the name of the Kafka topic against the Message at runtime. This attribute is mutually exclusive with \u0027topic\u0027 attribute.","required":false},{"name":"partition-id","type":"string","description":"Specifies the target partition for the Kafka message. This attribute is mutually exclusive with \u0027partition-id-expression\u0027 attribute.","required":false},{"name":"send-failure-channel","type":"string","description":"Specifies the channel to which an ErrorMessage for a failed send will be sent.","required":false},{"name":"timestamp-expression","type":"string","description":"Specifies the expression to determine the timestamp for a Kafka record against the Message at runtime.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"error-message-strategy","type":"string","description":"Specifies the Strategy for building an ErrorMessage.","required":false},{"name":"partition-id-expression","type":"string","description":"Specifies the expression to determine the partition for Kafka message against the Message at runtime. This attribute is mutually exclusive with \u0027partition-id\u0027 attribute.","required":false},{"name":"topic","type":"string","description":"Specifies the name of the Kafka topic. This attribute is mutually exclusive with \u0027topic-expression\u0027 attribute.","required":false},{"name":"sync","type":"boolean","description":"Specifies whether to block the sending thread until the producer callback has been invoked, indicating the broker has accepted the message (or an exception thrown if the send fails). Default: false.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"kafka-template","type":"string","description":"Specifies the KafkaTemplate used to publish messages.","required":false},{"name":"message-key-expression","type":"string","description":"Specifies the expression to determine the Key for Kafka message against the Message at runtime. This attribute is mutually exclusive with \u0027message-key\u0027 attribute.","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"source","name":"message-driven-channel-adapter","description":"Defines the Message Producing Endpoint for the KafkaMessageDrivenChannelAdapter.","attributes":[{"name":"send-timeout","type":"string","description":"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.","required":false},{"name":"payload-type","type":"string","description":"Set the payload type to convert to when using a type-aware message converter such as the StringJsonMessageConverter. Fully qualified class name; defaults to \u0027java.lang.Object\u0027.","required":false},{"name":"channel","type":"string","description":"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).","required":false},{"name":"message-converter","type":"string","description":"An \u0027org.springframework.kafka.support.converter.MessageConverter\u0027 bean reference. if mode \u003d \u0027record\u0027 must be a \u0027RecordMessageConverter\u0027; if mode \u003d \u0027batch\u0027 must be a `BatchMessageConverter`. Defaults to the default implementation for each mode.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"recovery-callback","type":"string","description":"Used in conjunction with a \u0027retry-template\u0027; in most cases this will be an \u0027ErrorMessageSendingRecoverer\u0027. Omitting this element will cause an exception to be thrown to the listener container after retries are exhausted.","required":false},{"name":"id","type":"string","required":false},{"name":"listener-container","type":"string","description":"An \u0027org.springframework.kafka.listener.AbstractMessageListenerContainer\u0027 bean reference.","required":false},{"name":"retry-template","type":"string","description":"A retry template for retrying deliveries; an \u0027error-channel\u0027 is not allowed when a retry template is provided; configure a \u0027recovery-callback\u0027 such as an \u0027ErrorMessageSendingRecoverer\u0027 when using a retry template.","required":false},{"name":"mode","type":"string","description":"\u0027record\u0027 or \u0027batch\u0027 - default \u0027record\u0027 - one converted ConsumerRecord per message, when \u0027batch\u0027 then the payload is a collection of converted ConsumerRecords.","default":"record","required":false,"restriction":{"type":"enum","values":["record","batch"]}},{"name":"error-channel","type":"string","description":"Message Channel to which error Messages should be sent.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"error-message-strategy","type":"string","description":"Specifies the Strategy for building an ErrorMessage.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}]}],"mqtt":[{"role":"endpoint","connectionType":"source","name":"message-driven-channel-adapter","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.mqtt.inbound.MqttPahoMessageDrivenChannelAdapter\u0027 that subscribes to the MQTT topic(s) and produces messages to the channel.","attributes":[{"name":"url","type":"string","description":"MQTT broker URL.","required":false},{"name":"topics","type":"string","description":"Specifies one or more (comma-delimited) topics on which to listen for messages.","required":false},{"name":"channel","type":"string","required":false},{"name":"client-factory","type":"string","description":" An MqttClientFactory used to create clients and connection options if you wish to override the defaults. Default is DefaultMqttClientFactory. ","required":false},{"name":"send-timeout","type":"string","description":"Allows you to specify how long this inbound-channel-adapter will wait for the message to be sent successfully to the message channel, before throwing an exception. This only applies when the channel might block (such as a bounded QueueChannel that is full). ","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition, which is an instance of either \u0027EventDrivenConsumer\u0027 or \u0027PollingConsumer\u0027, depending on whether the component\u0027s input channel is a \u0027SubscribableChannel\u0027 or \u0027PollableChannel\u0027.","required":false},{"name":"phase","type":"number","description":"Flag to indicate the phase in which the component should start automatically on startup. See SmartLifecycle.","required":false},{"name":"auto-startup","type":"boolean","description":"Flag to indicate that the component should start automatically on startup (default true).","default":"true","required":false},{"name":"error-channel","type":"string","description":"If a downstream exception is thrown and an error-channel is specified, the MessagingException will be sent to this channel. Otherwise, any such exception will be logged.","required":false},{"name":"converter","type":"string","description":" A message converter to convert Spring Integration Message\u003cString\u003e to/from a paho MqttMessage. Default is DefaultMqttMessageConverter. ","required":false},{"name":"client-id","type":"string","description":"MQTT client ID.","required":true},{"name":"qos","type":"string","description":"Specifies the QoS to use when subscribing to topics; default \u00271\u0027. This can be single value (applying to all topics); otherwise it must be a comma-delimited list corresponding to the provided topics (the name number of elements must be provided).","required":false},{"name":"recovery-interval","type":"string","description":"The time in milliseconds to wait between reconnection attempts. Defaults to 10 seconds. ","default":"10000","required":false}]},{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.mqtt.outbound.MqttPahoMessageDrivenChannelAdapter\u0027 that sends messages to the MQTT topic.","attributes":[{"name":"retained-expression","type":"string","description":"Specifies an expression to evaluate to determine the message \u0027retained\u0027 flag. Default \"headers[\u0027mqtt_retained\u0027]\".","required":false},{"name":"channel","type":"string","description":" Channel from which messages will be output. When a message is sent to this channel it will cause the query to be executed. ","required":false},{"name":"url","type":"string","description":"MQTT broker URL.","required":false},{"name":"default-topic","type":"string","description":"Specifies the default topic to which messages will be sent. Required if the \u0027topic-expression\u0027 evaluates to \u0027null\u0027","required":false},{"name":"qos-expression","type":"string","description":"Specifies an expression to evaluate to determine the message qos. Default \"headers[\u0027mqtt_qos\u0027]\".","required":false},{"name":"default-qos","type":"string","description":"Specifies the default quality of service; used if the \u0027qos-expression\u0027 evaluates to \u0027null\u0027. Default 0.","required":false},{"name":"client-factory","type":"string","description":" An MqttClientFactory used to create clients and connection options if you wish to override the defaults. Default is DefaultMqttClientFactory. ","required":false},{"name":"async-events","type":"string","description":"When \u0027async\u0027 is true, specifies that message sent and message delivery events will be published for reception by a suitably configured \u0027ApplicationListener\u0027 or an event inbound-channel-adapter. Default: \u0027false\u0027.","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition, which is an instance of either \u0027EventDrivenConsumer\u0027 or \u0027PollingConsumer\u0027, depending on whether the component\u0027s input channel is a \u0027SubscribableChannel\u0027 or \u0027PollableChannel\u0027.","required":false},{"name":"phase","type":"number","description":"Flag to indicate the phase in which the component should start automatically on startup. See SmartLifecycle.","required":false},{"name":"auto-startup","type":"boolean","description":"Flag to indicate that the component should start automatically on startup (default true).","default":"true","required":false},{"name":"converter","type":"string","description":" A message converter to convert Spring Integration Message\u003cString\u003e to/from a paho MqttMessage. Default is DefaultMqttMessageConverter. ","required":false},{"name":"client-id","type":"string","description":"MQTT client ID.","required":true},{"name":"default-retained","type":"string","description":"Specifies the default value of the \u0027retained\u0027 flag; used if the \u0027retained-expression\u0027 evaluates to \u0027null\u0027. Default false.","required":false},{"name":"topic-expression","type":"string","description":"Specifies an expression to evaluate to determine the destination topic. Default \"headers[\u0027mqtt_topic\u0027]\".","required":false},{"name":"async","type":"string","description":"Specifies that sends should not block, with the thread returning immediately the message is sent. When \u0027true\u0027, message sent and message delivery events can be published; see \u0027async-events\u0027. Default: \u0027false\u0027.","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}}],"sftp":[{"role":"endpoint","connectionType":"source","name":"inbound-channel-adapter","description":"Configures a \u0027SourcePollingChannelAdapter\u0027 Endpoint for the \u0027org.springframework.integration.sftp.inbound.SftpInboundFileSynchronizingMessageSource\u0027 that synchronizes with a remote SFTP endpoint.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"preserve-timestamp","type":"string","description":"Specify whether to preserve the modified timestamp from the remote source file on the local file after copying. By default, the remote timestamp will NOT be preserved.","default":"false","required":false},{"name":"channel","type":"string","description":"Identifies channel attached to this adapter. The channel to which messages will be sent by this adapter.","required":false},{"name":"id","type":"string","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when downloading files. We change it right after we know it\u0027s downloaded.","required":false},{"name":"local-filter","type":"string","description":"Allows you to specify a reference to a [org.springframework.integration.file.filters.FileListFilter] bean. This filter is applied to files after they have been retrieved. The default is an AcceptOnceFileListFilter which means that, even if a new instance of a file is retrieved from the remote server, a message won\u0027t be generated. The filter provided here is combined with a filter that prevents the message source from processing files that are currently being downloaded.","required":false},{"name":"metadata-store-prefix","type":"string","description":"Specify a prefix for metadata store to distinguish keys from another places where the same shared store is used. By default, the remote a component name is used.","required":false},{"name":"max-fetch-size","type":"string","description":"When fetching objects from some external resource, limit the number of such objects that will be retrieved on each fetch. A negative value (default) indicates no limit; a value of zero effectively disables fetching remote objects.","required":false},{"name":"local-directory","type":"string","description":"Identifies the directory path (e.g., \"/local/mytransfers\") where files will be transferred TO.","required":true},{"name":"comparator","type":"string","description":"Specify a Comparator to be used when ordering Files. If none is provided, the order will be determined by the java.io.File implementation of Comparable.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"scanner","type":"string","description":"Reference to a custom DirectoryScanner implementation.","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false},{"name":"local-filename-generator-expression","type":"string","description":"Allows you to provide a SpEL expression to generate the file name of the local (transferred) file. The root object of the SpEL evaluation is the name of the original file. For example, a valid expression would be \"#this.toUpperCase() + \u0027.a\u0027\" where #this represents the original name of the remote file.","required":false},{"name":"auto-create-local-directory","type":"string","description":"Tells this adapter if the local directory must be auto-created if it doesn\u0027t exist. Default is TRUE.","required":false},{"name":"delete-remote-files","type":"string","description":"Specify whether to delete the remote source file after copying. By default, the remote files will NOT be deleted.","default":"false","required":false},{"name":"filename-pattern","type":"string","description":"Allows you to provide a file name pattern to determine the file names that need to be scanned. This is based on simple pattern matching (e.g., \"*.txt, fo*.txt\" etc.)","required":false},{"name":"remote-file-metadata-store","type":"string","description":"Reference to a MetadataStore for saving remote files information between synchronization and polling.","required":false},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"filter","type":"string","description":"Allows you to specify a reference to a [org.springframework.integration.file.filters.FileListFilter] bean. This filter is applied to files on the remote server and only files that pass the filter are retrieved.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"filename-regex","type":"string","description":"Allows you to provide a Regular Expression to determine the file names that need to be scanned. (e.g., \"f[o]+\\.txt\" etc.)","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with a [com.jcraft.jsch.ChannelSftp$LsEntry] generic type parameter.","required":true}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"request_reply","name":"outbound-gateway","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.sftp.gateway.SftpOutboundGateway used to issue SFTP commands.","attributes":[{"name":"requires-reply","type":"string","description":"Specify whether this outbound gateway must return a non-null value. This value is \u0027true\u0027 by default, and a ReplyRequiredException will be thrown when the underlying service returns a null value.","default":"true","required":false},{"name":"mput-regex","type":"string","description":"Allows you to provide Regular Expression to determine the file names sent by the \u0027mput\u0027 command (e.g., \"f[o]+\\.txt\" etc.) Only one of \u0027mput-filter\u0027, \u0027mput-pattern\u0027, or \u0027mput-regex\u0027 is allowed.","required":false},{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the remote target directory if it doesn\u0027t exist.","default":"false","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"mput-filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027mput-filter\u0027 attribute.","required":false},{"name":"id","type":"string","required":false},{"name":"mput-filter","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.filters.FileListFilter] bean. This filter acts on the local file system when using the \u0027mput\u0027 command. Only one of \u0027mput-filter\u0027, \u0027mput-pattern\u0027, or \u0027mput-regex\u0027 is allowed.","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when downloading files. We change it right after we know it\u0027s downloaded.","required":false},{"name":"command","type":"string","description":"sftp command.","required":false,"restriction":{"type":"enum","values":["ls","nlst","get","rm","mget","mv","put","mput"]}},{"name":"filename-pattern","type":"string","description":"Allows you to provide file name pattern to determine the file names retrieved by the \u0027ls\u0027 and \u0027mget\u0027 commands and is based on simple pattern matching algorithm (e.g., \"*.txt, fo*.txt\" etc.) Only one of \u0027filter\u0027, \u0027filename-pattern\u0027, or \u0027filename-regex\u0027 is allowed.","required":false},{"name":"expression","type":"string","description":"SpEL expression representing the path in the command (e.g. ls path to list the files in directory path).","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"command-options","type":"string","description":"sftp command options; for ls, -1 means just return the file names (otherwise file metadata is returned, -dirs means include directories (not included by default), -links means include links (not included by default); for get, -P means preserve timestamp from remote file.","required":false},{"name":"temporary-remote-directory","type":"string","description":"Identifies the remote temporary directory path (e.g., \"/remote/temp/mytransfers\")","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false},{"name":"local-filename-generator-expression","type":"string","description":"Allows you to provide a SpEL expression to generate the file name of the local (transferred) file. The root object of the SpEL evaluation is the request Message, but the name of the original remote file is also provided as the \u0027remoteFileName\u0027 variable. For example, a valid expression would be: \"#remoteFileName.toUpperCase() + headers.foo\". Only used with \u0027get\u0027 and \u0027mget\u0027 commands.","required":false},{"name":"auto-create-local-directory","type":"boolean","description":"Tells this adapter if local directory must be auto-created if it doesn\u0027\u0027t exist. Default is TRUE.","required":false},{"name":"request-channel","type":"string","description":"Identifies the request channel attached to this gateway.","required":false},{"name":"mput-pattern","type":"string","description":"Allows you to provide file name pattern to determine the file names sent by the \u0027mput\u0027 command and is based on simple pattern matching algorithm (e.g., \"*.txt, fo*.txt\" etc.) Only one of \u0027mput-filter\u0027, \u0027mput-pattern\u0027, or \u0027mput-regex\u0027 is allowed.","required":false},{"name":"remote-filename-generator","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.FileNameGenerator] bean.","required":false},{"name":"session-callback","type":"string","description":"The \u0027MessageSessionCallback\u0027 bean reference to perform custom operation(s) on \u0027Session\u0027 with \u0027requestMessage\u0027.","required":false},{"name":"local-directory-expression","type":"string","description":"Specifies SpEL expression to generate the directory path where file will be transferred TO, when using \u0027get\u0027 and \u0027mget\u0027 commands. The root object of the SpEL evaluation is the request Message, but the name of the source remote directory is also provided as the \u0027remoteDirectory\u0027 variable. For example, a valid expression might be: \"\u0027/local/\u0027 + #remoteDirectory.toUpperCase() + headers.foo\". Only used with \u0027get\u0027 and \u0027mget\u0027 commands. This attribute is mutually exclusive with \u0027local-directory\u0027.","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds.","required":false},{"name":"mode","type":"string","description":"This attribute defaults to \u0027REPLACE\u0027 if not set explicitly. The following options are available: APPEND: If append is specified, the data will be appended to the existing file if such file exists, otherwise the new file will be created as usual but, once created, the subsequent data will be appended to it. This attribute is mutually exclusive with the use of a temporary file, since append is done to the actual file and not its temporary counterpart. The file is closed after each write. If set to APPEND, the component will also use instance of the LockRegistry to ensure that there are no collisions when multiple threads are writing to the same file. APPEND_NO_FLUSH: Same as \u0027APPEND\u0027 but the data is not flushed or the file closed. This can significantly improve performance at the risk of lost data in the event of a failure. Various strategies are available for flushing the data and closing the file. Refer to the reference documentation for more information. FAIL: If the target file exists, a MessageHandlingException is thrown. IGNORE: If the target file exists, the message payload is silently ignored. REPLACE: This is the default behavior when writing files. If the target file already exists, it will be overwritten. REPLACE_IF_MODIFIED: If the local file already exists, it will be overwritten only if the last modified timestamp does not match the source timestamp. Only applies to local files.","required":false,"restriction":{"type":"enum","values":["REPLACE","REPLACE_IF_MODIFIED","APPEND","APPEND_NO_FLUSH","FAIL","IGNORE"]}},{"name":"filter","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.filters.FileListFilter] bean. This filter acts against the remote server view when using the \u0027ls\u0027 or \u0027mget\u0027 commands. Only one of \u0027filter\u0027, \u0027filename-pattern\u0027, or \u0027filename-regex\u0027 is allowed.","required":false},{"name":"reply-channel","type":"string","description":"Identifies the reply channel attached to this gateway.","required":false},{"name":"temporary-remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the temporary directory path to where files will be transferred before they are moved to the remote-directory (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/temp/myTransfers\u0027\");","required":false},{"name":"filename-regex","type":"string","description":"Allows you to provide Regular Expression to determine the file names retrieved by the \u0027ls\u0027 and \u0027mget\u0027 commands. (e.g., \"f[o]+\\.txt\" etc.) Only one of \u0027filter\u0027, \u0027filename-pattern\u0027, or \u0027filename-regex\u0027 is allowed.","required":false},{"name":"local-directory","type":"string","description":"Identifies directory path (e.g., \"/local/mytransfers\") where file will be transferred TO. This attribute is mutually exclusive with \u0027local-directory-expression\u0027.","required":false},{"name":"remote-filename-generator-expression","type":"string","description":"Allows you to provide SpEL expression which will compute file name of the remote file (e.g., assuming payload is java.io.File \"payload.getName() + \u0027.transferred\u0027\");","required":false},{"name":"chmod","type":"string","description":"Change the mode of the file (or remote file) after writing. Integer value expressed in Octal, e.g. \u0027644\u0027.","required":false},{"name":"rename-expression","type":"string","description":"SpEL expression representing the path for the new filename when using the \u0027mv\u0027 command. Defaults to \"headers.[\u0027file_renameTo\u0027]\".","required":false},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"use-temporary-file-name","type":"string","description":"Allows you to suppress using a temporary file name while writing the file.","default":"true","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"order","type":"string","description":"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, or when a failure in the delivery to one subscriber should signal that the message should not be sent to subscribers with a higher \u0027order\u0027 attribute. It has no effect when this endpoint itself is a Polling Consumer for a channel with a queue.","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with a [com.jcraft.jsch.ChannelSftp$LsEntry] generic type parameter.","required":true},{"name":"charset","type":"string","description":"Allows you to specify Charset (e.g., US-ASCII, ISO-8859-1, UTF-8). [UTF-8] is default - used when converting String payloads to bytes.","default":"UTF-8","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.file.remote.handler.FileTransferringMessageHandler\u0027 for the \u0027SftpRemoteFileTemplate\u0027 that writes files to a remote SFTP endpoint.","attributes":[{"name":"remote-filename-generator","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.FileNameGenerator] bean.","required":false},{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the remote target directory if it doesn\u0027t exist.","default":"false","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"mode","type":"string","description":"This attribute defaults to \u0027REPLACE\u0027 if not set explicitly. The following options are available: APPEND: If append is specified, the data will be appended to the existing file if such file exists, otherwise the new file will be created as usual but, once created, the subsequent data will be appended to it. This attribute is mutually exclusive with the use of a temporary file, since append is done to the actual file and not its temporary counterpart. The file is closed after each write. If set to APPEND, the component will also use instance of the LockRegistry to ensure that there are no collisions when multiple threads are writing to the same file. APPEND_NO_FLUSH: Same as \u0027APPEND\u0027 but the data is not flushed or the file closed. This can significantly improve performance at the risk of lost data in the event of a failure. Various strategies are available for flushing the data and closing the file. Refer to the reference documentation for more information. FAIL: If the target file exists, a MessageHandlingException is thrown. IGNORE: If the target file exists, the message payload is silently ignored. REPLACE: This is the default behavior when writing files. If the target file already exists, it will be overwritten. REPLACE_IF_MODIFIED: If the local file already exists, it will be overwritten only if the last modified timestamp does not match the source timestamp. Only applies to local files.","required":false,"restriction":{"type":"enum","values":["REPLACE","REPLACE_IF_MODIFIED","APPEND","APPEND_NO_FLUSH","FAIL","IGNORE"]}},{"name":"id","type":"string","required":false},{"name":"temporary-remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the temporary directory path to where files will be transferred before they are moved to the remote-directory (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/temp/myTransfers\u0027\");","required":false},{"name":"remote-filename-generator-expression","type":"string","description":"Allows you to provide SpEL expression which will compute file name of the remote file (e.g., assuming payload is java.io.File \"payload.getName() + \u0027.transferred\u0027\");","required":false},{"name":"chmod","type":"string","description":"Change the mode of the file (or remote file) after writing. Integer value expressed in Octal, e.g. \u0027644\u0027.","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when downloading files. We change it right after we know it\u0027s downloaded.","required":false},{"name":"use-temporary-file-name","type":"string","description":"Allows you to suppress using a temporary file name while writing the file.","default":"true","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"channel","type":"string","description":"Identifies channel attached to this adapter. This channel could be the receiving channel.","required":false},{"name":"order","type":"string","description":"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, or when a failure in the delivery to one subscriber should signal that the message should not be sent to subscribers with a higher \u0027order\u0027 attribute. It has no effect when this endpoint itself is a Polling Consumer for a channel with a queue.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with a [com.jcraft.jsch.ChannelSftp$LsEntry] generic type parameter.","required":true},{"name":"charset","type":"string","description":"Allows you to specify Charset (e.g., US-ASCII, ISO-8859-1, UTF-8). [UTF-8] is default - used when converting String payloads to bytes.","default":"UTF-8","required":false},{"name":"temporary-remote-directory","type":"string","description":"Identifies the remote temporary directory path (e.g., \"/remote/temp/mytransfers\")","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"source","name":"inbound-streaming-channel-adapter","description":"Configures a \u0027SourcePollingChannelAdapter\u0027 Endpoint for the \u0027org.springframework.integration.ftp.inbound.FtpInboundStreamingMessageSource\u0027.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"channel","type":"string","description":"Identifies channel attached to this adapter. The channel to which messages will be sent by this adapter.","required":false},{"name":"id","type":"string","required":false},{"name":"filename-pattern","type":"string","description":"Allows you to provide a file name pattern to determine the file names that need to be scanned. This is based on simple pattern matching (e.g., \"*.txt, fo*.txt\" etc.)","required":false},{"name":"comparator","type":"string","description":"Specify a Comparator to be used when ordering Files. If none is provided, the order in which files are processed is the order they are received from the SFTP server. The generic type of the Comparator must be \u0027SftpFileInfo\u0027.","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"max-fetch-size","type":"string","description":"When fetching objects from some external resource, limit the number of such objects that will be retrieved on each fetch. A negative value (default) indicates no limit; a value of zero effectively disables fetching remote objects.","required":false},{"name":"filter","type":"string","description":"Allows you to specify a reference to a [org.springframework.integration.file.filters.FileListFilter] bean. This filter is applied to files on the remote server and only files that pass the filter are retrieved.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"filename-regex","type":"string","description":"Allows you to provide a Regular Expression to determine the file names that need to be scanned. (e.g., \"f[o]+\\.txt\" etc.)","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with a [com.jcraft.jsch.ChannelSftp$LsEntry] generic type parameter.","required":true},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}}],"tcp-udp":[{"role":"endpoint","connectionType":"source","name":"udp-inbound-channel-adapter","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.ip.udp.UnicastReceivingChannelAdapter\u0027 for receiving incoming udp packets.","attributes":[{"name":"lookup-host","type":"string","description":"Whether or not to do a DNS reverse-lookup on the remote ip address to insert the host name into the message headers (ip_hostName). Default \"true\".","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"check-length","type":"string","required":false},{"name":"receive-buffer-size","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"multicast","type":"string","required":false},{"name":"channel","type":"string","required":false},{"name":"so-timeout","type":"string","required":false},{"name":"task-executor","type":"string","description":"Specifies a specific Executor to be used for socket handling. If not supplied, an internal pooled executor will be used (See pool-size). Needed on some platforms that require the use of specific task executors such as a WorkManagerTaskExecutor.","required":false},{"name":"error-channel","type":"string","description":"If a (synchronous) downstream exception is thrown and an \"error-channel\" is specified, the MessagingException will be sent to this channel. Otherwise, any such exception will simply be logged by the channel adapter.","required":false},{"name":"multicast-address","type":"string","required":false},{"name":"port","type":"string","required":false},{"name":"so-send-buffer-size","type":"string","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"so-receive-buffer-size","type":"string","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"local-address","type":"string","description":"On a multi-homed system, specifies the ip address of the network interface used to communicate. For inbound adapters and gateways, specifies the interface used to listen for incoming connections. If omitted, the endpoint will listen on all available adapters. For the UDP multicast outbound adapter specifies the interface to which multicast packets will be sent. For UDP unicast and multicast adapters, specifies which interface to which the acknowledgment socket will be bound. Does not apply to TCP outbound adapters and gateways.","required":false},{"name":"pool-size","type":"string","description":"The number of threads that will be used for socket/channel handling. Only applies if an external task-executor is NOT being used. When using an external task executor, its configuration specifies the number of threads.","required":false}]},{"role":"endpoint","connectionType":"request_reply","name":"tcp-outbound-gateway","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.ip.tcp.TcpOutboundGateway\u0027 for sending TCP packets and waiting for replies.","attributes":[{"name":"request-timeout","type":"string","description":"When using a shared socket, specifies the time the gateway will wait to get access to the socket to send the request.","required":false},{"name":"request-channel","type":"string","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"connection-factory","type":"string","description":"A connection factory is needed by an outbound adapter. The connection factory must be of \u0027client\u0027.","required":false},{"name":"close-stream-after-send","type":"string","description":"Close the output stream after sending the message; this signals EOF to the server while keeping the connection open to receive the reply. Requires \u0027single-use\u0027 set to \u0027true\u0027.","required":false},{"name":"id","type":"string","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds. Prior to 2.2, this attribute served the function of the remote-timeout attribute; it has been changed to make it consistent with other endpoints.","required":false},{"name":"reply-channel","type":"string","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"remote-timeout","type":"string","description":"Specifies the time the gateway will wait for a reply from the remote system. Prior to 2.2, this was specified with the reply-timeout attribute. To provide easier migration, this attribute defaults to the same value of the reply-timeout, if supplied, or 10 seconds otherwise. Mutually exclusive with \u0027remote-timeout-expression\u0027.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-timeout-expression","type":"string","description":"Specifies an expresssion that is evaluated against the outbound message to determine the time the gateway will wait for a reply from the remote system. Mutually exclusive with \u0027remote-timeout\u0027.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"sink","name":"udp-outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.ip.udp.UnicastSendingMessageHandler\u0027 to send UDP packets.","attributes":[{"name":"host","type":"string","required":false},{"name":"ack-host","type":"string","required":false},{"name":"check-length","type":"string","required":false},{"name":"ack-timeout","type":"string","required":false},{"name":"socket-expression","type":"string","description":"A SpEL expression to be evaluated to determine which datagram socket use for sending outgoing UDP packets (e.g. UDP inbound packet receiving Channel Adapter socket can be used).","required":false},{"name":"id","type":"string","required":false},{"name":"multicast","type":"string","required":false},{"name":"channel","type":"string","required":false},{"name":"so-timeout","type":"string","required":false},{"name":"min-acks-for-success","type":"string","required":false},{"name":"ack-port","type":"string","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"port","type":"string","required":false},{"name":"so-send-buffer-size","type":"string","required":false},{"name":"so-receive-buffer-size","type":"string","required":false},{"name":"task-executor","type":"string","description":"Specifies a specific Executor to be used for handling acknowledgments in the UDP adapter. If not supplied, an internal pooled executor will be used. Needed on some platforms that require the use of specific task executors such as a WorkManagerTaskExecutor.","required":false},{"name":"destination-expression","type":"string","description":"A SpEL expression to determine the destination address for the datagram packet at runtime. The \u0027requestMessage\u0027 is used as a root object for evaluation context. Must evaluate to \u0027URI\u0027, or \u0027String\u0027 in the URI style or \u0027SocketAddress\u0027. The \u0027IpHeaders.PACKET_ADDRESS\u0027 header from the received message throughout \u0027udp-inbound-channel-adapter\u0027 can be used with this expression as well. Mutually exclusive with \u0027host\u0027/\u0027port\u0027 pair.","required":false},{"name":"local-address","type":"string","description":"On a multi-homed system, specifies the ip address of the network interface used to communicate. For inbound adapters and gateways, specifies the interface used to listen for incoming connections. If omitted, the endpoint will listen on all available adapters. For the UDP multicast outbound adapter specifies the interface to which multicast packets will be sent. For UDP unicast and multicast adapters, specifies which interface to which the acknowledgment socket will be bound. Does not apply to TCP outbound adapters and gateways.","required":false},{"name":"time-to-live","type":"string","required":false},{"name":"acknowledge","type":"string","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"tcp-connection-factory","description":"Defines a \u0027org.springframework.integration.ip.tcp.connection.ConnectionFactory\u0027 implementation bean.","attributes":[{"name":"port","type":"string","description":"For client factories, the port to which a client connection factory will connect. For server factories, the port on which the factory will listen for incoming connections.","required":false},{"name":"so-linger","type":"string","required":false},{"name":"single-use","type":"string","description":"If true, a new connection will be created for each use. For inbound adapters where there is no outbound adapter sharing the factory, the connection will be closed after a message is received. For outbound adapters where there is no inbound adapter sharing the factory, or for inbound adapters where an outbound adapter shares the factory, the connection will be closed after so-timeout milliseconds. For outbound adapters where an inbound adapter shares the factory, the connection will be closed after a response is received.","required":false},{"name":"net-connection-support","type":"string","description":"A reference to a TcpNetConnectionSupport strategy implementation. When \u0027using-nio\u0027 is false, this is used to create connection objects.","required":false},{"name":"socket-factory-support","type":"string","description":"A reference to a TcpSocketFactorySupport strategy implementation. Allows customization of the factories used to create sockets. The default implementation returns default. ServerSocketFactory and SocketFactory instances, unless an \u0027ssl-context-support\u0027 attribute has been supplied, in which case the SSLContext obtained therefrom is used to create SSLServerSocketFactory and SSLSocketFactory instances.","required":false},{"name":"ssl-handshake-timeout","type":"string","description":"The timeout (in seconds) to use while performing handshakes on SSL sockets; only applies when \u0027using-nio\u0027 is \u0027true\u0027. Default: 30.","required":false},{"name":"backlog","type":"string","description":"Specifies the connection backlog for server sockets. Does not apply to client factories.","required":false},{"name":"id","type":"string","required":false},{"name":"so-timeout","type":"string","required":false},{"name":"so-traffic-class","type":"string","required":false},{"name":"lookup-host","type":"string","description":"Whether or not to do a DNS reverse-lookup on the remote ip address to insert the host name into the message headers (ip_connectionId, ip_hostName). Default \"true\".","required":false},{"name":"apply-sequence","type":"string","description":"When set to \"true\", adds sequenceNumber and correlationId headers to messages originating from connections created by this factory. Facilitates resequencing if necessary. Default \"false\".","default":"false","required":false},{"name":"so-keep-alive","type":"string","required":false},{"name":"read-delay","type":"string","description":"The delay (in milliseconds) before retrying a read after the previous attempt failed due to insufficient threads. Default 100. Only applies when \u0027using-nio\u0027 is true.","default":"100","required":false},{"name":"ssl-context-support","type":"string","description":"A reference to a TcpSSLContextSupport strategy implementation. Providing this reference enables SSL on connections created by this factory. A DefaultTcpSSLContextSupport implementation is provided that takes keystore and trustore names and passwords. The SSLContext created by this implementation is used to obtain socket factories (when using-nio\u003d\"false\") or SSLEngine instances (when using-nio\u003d\"true\"). When this attribute is omitted, normal plain text sockets are used.","required":false},{"name":"interceptor-factory-chain","type":"string","required":false},{"name":"local-address","type":"string","description":"On a multi-homed system, specifies the ip address of the network interface used to communicate. For inbound adapters and gateways, specifies the interface used to listen for incoming connections. If omitted, the endpoint will listen on all available adapters. For the UDP multicast outbound adapter specifies the interface to which multicast packets will be sent. For UDP unicast and multicast adapters, specifies which interface to which the acknowledgment socket will be bound. Does not apply to TCP outbound adapters and gateways.","required":false},{"name":"deserializer","type":"string","description":"A Deserializer that converts message payloads to/from output streams/input streams associated with the connection. Default is ByteArrayCrLfSerializer. Serializer and Deserializer would normally be the same but this is not required.","required":false},{"name":"nio-connection-support","type":"string","description":"A reference to a TcpNioConnectionSupport strategy implementation. When \u0027using-nio\u0027 is true, this is used to create connection objects. Two default implementations are provided \u0027DefaultTcpNioConnectionSupport\u0027 and \u0027DefaultTcpNioSSLConnectionSupport\u0027 depending on whether SSL is in use of not.","required":false},{"name":"connect-timeout","type":"string","description":"For client factories, the amount of time to wait for a connection to be established.","required":false},{"name":"so-tcp-no-delay","type":"string","required":false},{"name":"using-direct-buffers","type":"string","description":"If true, instructs the factory to use direct buffers if possible; only applies if using-nio is true. Refer to ByteBuffer javadocs for more information.","required":false},{"name":"task-executor","type":"string","description":"A task executor for managing connections; if not specified a cached thread pool task executor is used.","required":false},{"name":"serializer","type":"string","description":"A Serializer that converts message payloads to/from output streams/input streams associated with the connection. Default is ByteArrayCrLfSerializer. Serializer and Deserializer would normally be the same but this is not required.","required":false},{"name":"mapper","type":"string","description":"A reference to a TcpMessageMapper implementation. Allows customization of headers in inbound messages by overriding setCustomHeaders(). Default is TcpMessageMapper.","required":false},{"name":"using-nio","type":"string","description":"If true, the factory will use java.nio.channel.SocketChannel for communication; for a large number of connections on the server side, this can provide better performance and may use fewer threads.","default":"false","required":false},{"name":"type","type":"string","description":"Connection factories can be \u0027client\u0027 or \u0027server\u0027. Client factories open a connection to a server using a host and port. Server factories listen on a port and create a separate connection for each incoming connection request.","required":false,"restriction":{"type":"enum","values":["client","server"]}},{"name":"so-send-buffer-size","type":"string","required":false},{"name":"host","type":"string","description":"The host to which a client connection factory will connect.","required":false},{"name":"socket-support","type":"string","description":"A reference to a TcpSocketSupport strategy implementation. Allows post-processing Socket and ServerSocket instances after creation and after configured attributes are applied.","required":false},{"name":"so-receive-buffer-size","type":"string","required":false}]},{"role":"endpoint","connectionType":"request_reply","name":"tcp-inbound-gateway","description":"Defines a Messaging Gateway Endpoint for the \u0027org.springframework.integration.ip.tcp.TcpInboundGateway\u0027 for receiving incoming TCP packets and producing replies for them.","attributes":[{"name":"connection-factory","type":"string","description":"A connection factory is needed by an inbound adapter. The connection factory must be of type \u0027server\u0027.","required":false},{"name":"reply-timeout","type":"string","required":false},{"name":"client-mode","type":"string","description":"If set to true, causes the gateway to act as a client with respect to establishing the connection, rather than listening for incoming connections. Requires a type\u003d\"client\" connection factory, with single-use set to false. Defaults to false.","default":"false","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"retry-interval","type":"string","description":"When in client mode, specifies the retry interval, in milliseconds, if a connection cannot be established. Defaults to 60000.","default":"60000","required":false},{"name":"scheduler","type":"string","description":"When in client mode, provide a reference to the TaskScheduler instance to be used for establishing connections. If not provided, the default will use a thread pool of size 1.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"error-channel","type":"string","description":"If a (synchronous) downstream exception is thrown and an \"error-channel\" is specified, the MessagingException will be sent to this channel and the ultimate response of the error flow will be returned as a response by the gateway. If no \"error-channel\" is specified, any such exception will simply be logged by the gateway. In such a situation, no response is sent to the client.","required":false},{"name":"id","type":"string","required":false},{"name":"request-channel","type":"string","required":true},{"name":"reply-channel","type":"string","required":false}]},{"role":"endpoint","connectionType":"source","name":"tcp-inbound-channel-adapter","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.ip.tcp.TcpReceivingChannelAdapter\u0027 for receiving incoming tcp packets.","attributes":[{"name":"error-channel","type":"string","description":"If a (synchronous) downstream exception is thrown and an \"error-channel\" is specified, the MessagingException will be sent to this channel. Otherwise, any such exception will simply be logged by the channel adapter.","required":false},{"name":"connection-factory","type":"string","description":"A connection factory is needed by an inbound adapter. If the connection factory has a type \u0027server\u0027, the factory is \u0027owned\u0027 by this adapter. If it has a type \u0027client\u0027, it is owned by an outbound channel adapter and this adapter will receive any incoming messages on the connection created by the outbound adapter.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"retry-interval","type":"string","description":"When in client mode, specifies the retry interval, in milliseconds, if a connection cannot be established. Defaults to 60000.","default":"60000","required":false},{"name":"scheduler","type":"string","description":"When in client mode, provide a reference to the TaskScheduler instance to be used for establishing connections. If not provided, the default will use a thread pool of size 1.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"client-mode","type":"string","description":"If set to true, causes the adapter to act as a client with respect to establishing the connection, rather than listening for incoming connections. Requires a type\u003d\"client\" connection factory, with single-use set to false. Defaults to false.","default":"false","required":false},{"name":"channel","type":"string","required":false}]},{"role":"endpoint","connectionType":"sink","name":"tcp-outbound-channel-adapter","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.ip.tcp.TcpSendingMessageHandler\u0027 for sending TCP packets.","attributes":[{"name":"client-mode","type":"string","description":"If set to true, causes the adapter to establish a connection when started, rather than when the first message is sent. Requires a type\u003d\"client\" connection factory, with single-use set to false. Defaults to false.","default":"false","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"retry-interval","type":"string","description":"When in client mode, specifies the retry interval, in milliseconds, if a connection cannot be established. Defaults to 60000.","default":"60000","required":false},{"name":"scheduler","type":"string","description":"When in client mode, provide a reference to the TaskScheduler instance to be used for establishing connections. If not provided, the default will use a thread pool of size 1.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"connection-factory","type":"string","description":"A connection factory is needed by an outbound adapter. If the connection factory has a type \u0027client\u0027, the factory is \u0027owned\u0027 by this adapter. If it has a type \u0027server\u0027, it is owned by an inbound channel adapter and this adapter will attempt to correlate messages to the connection on which an original inbound message was received.","required":false},{"name":"channel","type":"string","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}}],"web-services":[{"role":"endpoint","connectionType":"passthru","name":"header-enricher","description":"Defines a \u0027org.springframework.integration.transformer.HeaderEnricher\u0027 for adding a SOAP Action value.","attributes":[{"name":"output-channel","type":"string","required":false},{"name":"input-channel","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"default-overwrite","type":"boolean","description":"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 \u0027overwrite\u0027 attribute. If the \u0027default-overwrite\u0027 attribute is not provided, then the specified header values will NOT overwrite any existing ones with the same header names.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"max":2},"children":[{"name":"soap-action","attributes":[{"name":"expression","type":"string","required":false},{"name":"value","type":"string","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false},{"name":"ref","type":"string","required":false}]},{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"request_reply","name":"outbound-gateway","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.ws.AbstractWebServiceOutboundGateway\u0027 implementation that sends SOAP requests and expects responses.","attributes":[{"name":"unmarshaller","type":"string","description":"Reference to a Spring OXM Unmarshaller.","required":false},{"name":"mapped-reply-headers","type":"string","description":"Comma-separated list of names of MessageHeaders to be mapped into the SOAP Headers of the SOAP reply. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\").","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"source-extractor","type":"string","description":"Reference to a Spring Web Services SourceExtractor.","required":false},{"name":"extract-payload","type":"boolean","description":"Set to \u0027true\u0027 to extract the WebServiceMessage payload. Otherwise the whole WebServiceMessage is used as the integration message payload. This option is only applied for the simple gateway.","required":false},{"name":"interceptor","type":"string","description":"Reference to the bean definition of a ClientInterceptor.","required":false},{"name":"fault-message-resolver","type":"string","required":false},{"name":"message-sender","type":"string","description":"Reference to the bean definition of a WebServiceMessageSender.","required":false},{"name":"request-channel","type":"string","description":"The channel where Messages should be sent to invoke the Web Service.","required":false},{"name":"marshaller","type":"string","description":"Reference to a Spring OXM Marshaller. If the Marshaller instance also implements the Unmarshaller interface, then the \u0027unmarshaller\u0027 attribute is not required.","required":false},{"name":"mapped-request-headers","type":"string","description":"Comma-separated list of names of SOAP Headers to be mapped from the SOAP request into the MessageHeaders. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\").","required":false},{"name":"header-mapper","type":"string","description":"Reference to a SoapHeaderMapper implementation that this gateway will use to map between Spring Integration MessageHeaders and the SoapHeader.","required":false},{"name":"id","type":"string","description":"A unique identifier for this Gateway.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"web-service-template","type":"string","description":"Reference to a WebServiceTemplate instance. The WebServiceTemplate-specific options like \u0027message-sender(s)\u0027, \u0027interceptor(s)\u0027, \u0027fault-message-resolver\u0027 and \u0027message-factory\u0027 must be declared on that instance.","required":false},{"name":"reply-channel","type":"string","description":"The channel where Messages created from the Web Service responses will be sent. This is optional. However, if non-empty responses are expected and this is not set, then the request Messages must contain a REPLY_CHANNEL header.","required":false},{"name":"destination-provider","type":"string","description":"Reference to a DestinationProvider implementation. Either provide this or a \u0027uri\u0027, never both. See org.springframework.ws.client.support.destination.DestinationProvider for more detail.","required":false},{"name":"request-callback","type":"string","description":"Reference to a Spring Web Services WebServiceMessageCallback. This enables changing the Web Service request message after the payload has been written to it but prior to invocation of the actual Web Service.","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds.","required":false},{"name":"message-senders","type":"string","description":"Reference to the bean definition for a list or array of WebServiceMessageSenders.","required":false},{"name":"interceptors","type":"string","description":"Reference to the bean definition for a list or array of ClientInterceptors.","required":false},{"name":"encode-uri","type":"boolean","description":"When set to \"false\", the URI won\u0027t be encoded before the request is sent. This may be useful in some scenarios as it allows user control over the encoding, if needed. Default is \"true\". This attribute is ignored, if \u0027destination-provider\u0027 is specified.","default":"true","required":false},{"name":"requires-reply","type":"string","description":"Specify whether this outbound gateway must return a non-null value. This value is \u0027false\u0027 by default, otherwise a ReplyRequiredException will be thrown when the underlying service returns a null value, or an empty String (if \u0027ignore-empty-responses\u0027 is \u0027true\u0027).","default":"false","required":false},{"name":"order","type":"string","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"ignore-empty-responses","type":"string","description":"Indicates whether empty String response payloads should be considered as null. The default is TRUE. See also \u0027requires-reply\u0027. Note that when \u0027requires-reply\u0027 is \u0027true\u0027 the response is not actually \u0027ignored\u0027, because it will cause a ReplyRequiredException to be thrown. Set this to FALSE if you want to send empty String responses in reply Messages.","required":false},{"name":"uri","type":"string","description":"The Destination URI for this Web Service Gateway. If the URI should be determined at runtime (e.g. registry lookup), then configure a \u0027destination-provider\u0027 reference instead. Alternatively, this URI may include {placeholders} whose values are determined by evaluating SpEL expressions provided via \u0027uri-variable\u0027 sub-elements. The root object for those evaluations is the actual request Message at runtime, i.e. you can access its payload or headers in the expression.","required":false},{"name":"message-factory","type":"string","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0,"max":-1},"name":"uri-variable","description":"Expression to be evaluated against the Message to replace a URI {placeholder} with the evaluation result.","attributes":[{"name":"expression","type":"string","description":"Expression to be evaluated to determine the replacement value. The Message is the root object of the expression, therefore the \u0027payload\u0027 and \u0027headers\u0027 are available directly. Any bean may be resolved if the bean name is preceded with \u0027@\u0027.","required":true},{"name":"name","type":"string","description":"Name of the placeholder to be replaced.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"request_reply","name":"inbound-gateway","description":"Configures a Messaging Gateway Endpoint for the \u0027org.springframework.integration.ws.AbstractWebServiceInboundGateway\u0027 implementation that receives SOAP requests and produce responses.","attributes":[{"name":"unmarshaller","type":"string","required":false},{"name":"error-channel","type":"string","description":"If a (synchronous) downstream exception is thrown and an error-channel is specified, the MessagingException will be sent to this channel.","required":false},{"name":"mapped-reply-headers","type":"string","description":"Comma-separated list of names of MessageHeaders to be mapped into the SOAP Headers of the SOAP reply. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\").","required":false},{"name":"request-channel","type":"string","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"extract-payload","type":"boolean","description":"Set to \u0027true\u0027 to extract the WebServiceMessage payload. Otherwise the whole WebServiceMessage is used as the integration message payload. This option is only applied for the simple gateway.","required":false},{"name":"marshaller","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"reply-channel","type":"string","required":false},{"name":"reply-timeout","type":"string","description":"Maximum time in milliseconds to wait for a reply from the downstream message flow initiated by this gateway. This attribute is only relevant if at least some part of the downstream flow is asynchronous.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"mapped-request-headers","type":"string","description":"Comma-separated list of names of SOAP Headers to be mapped from the SOAP request into the MessageHeaders. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\").","required":false},{"name":"header-mapper","type":"string","description":"Reference to a SoapHeaderMapper implementation that this gateway will use to map between Spring Integration MessageHeaders and the SoapHeader.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}]}],"xml":[{"role":"router","connectionType":"content_based_router","name":"xpath-router","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.xml.router.XPathRouter\u0027 which allows for the routing of messages using XPath expressions. This Message Endpoint has no output channel. Instead, one or more output channels are determined dynamically using the provided XPath Expression.","attributes":[{"name":"xpath-expression-ref","type":"string","description":"Reference to the XPathExpression instance to be evaluated against the input Message\u0027s payload. Either this or \u0027xpath-expression\u0027 must be provided, but not both.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"converter","type":"string","description":"Specify the Converter to use when converting payloads prior to XPath evaluation. The DefaultXmlPayloadConverter is used if this reference is not provided, and it should be sufficient in most cases since it can convert from Node, Document, Source, File, and String typed payloads. If you need to extend beyond the capabilities of that default implementation, then an upstream Transformer is probably a better option than providing a reference to a custom implementation of this strategy here.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"evaluate-as-string","type":"boolean","description":"By default XPath expressions are evaluated as NODESET type and then converted to a List of channel names, thus handling single channel scenarios as well as multiple. However certain XPath expressions may evaluate to String type results from the very beginning (e.g., \u0027name(./node())\u0027 - which will return the name of the root node) thus resulting in an exception if the default evaluation type (NODESET) is used. This flag will allow you to manage the evaluation type. It is \u0027false\u0027 by default, however if set to \u0027true\u0027, then the String evaluation type will be used.","default":"false","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"xpath-expression","description":"Defines an XPath expression - \u0027org.springframework.xml.xpath.XPathExpressionFactory\u0027 with the \u0027createXPathExpression()\u0027 factory-method. Internally XPath expressions will be evaluated as NODESET type and converted to a List\u003cString\u003e representing channel names. Typically such a list will contain a single channel name. However, based on the result of an XPath Expression the XPath router can also take on the characteristics of the Recipient List Router if the XPath Expression returns more than one value, thus resulting in the List\u003cString\u003e containing more than one channel name. In that case the Message will be sent to all channels in the list.","attributes":[{"name":"namespace-map","type":"string","required":false},{"name":"expression","type":"string","required":true},{"name":"id","type":"string","required":false},{"name":"ns-uri","type":"string","required":false},{"name":"ns-prefix","type":"string","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"map","description":"A mapping from a key to an object. Maps may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"key-type","type":"string","description":"The default Java type for nested entry keys. Must be a fully qualified class name.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"description","description":"Contains informative text describing the purpose of the enclosing element. Used primarily for user documentation of XML bean definition documents.","childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[]}},{"occurrence":{"min":0,"max":-1},"name":"entry","description":"A map entry can be an inner bean, ref, value, or collection. The key of the entry is given by the \"key\" attribute or child element.","attributes":[{"name":"value","type":"string","description":"A short-cut alternative to a nested \"\u003cvalue\u003e...\u003c/value\u003e\" element.","required":false},{"name":"key-ref","type":"string","description":"A short-cut alternative to a to a \"key\" element with a nested \"\u003cref bean\u003d\u0027...\u0027/\u003e\".","required":false},{"name":"value-ref","type":"string","description":"A short-cut alternative to a nested \"\u003cref bean\u003d\u0027...\u0027/\u003e\".","required":false},{"name":"value-type","type":"string","description":"A short-cut alternative to a \u0027type\u0027 attribute on a nested \"\u003cvalue type\u003d\u0027...\u0027 \u003e...\u003c/value\u003e\" element.","required":false},{"name":"key","type":"string","description":"Each map element must specify its key as attribute or as child element. A key attribute is always a String value.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"key","description":"A key element can contain an inner bean, ref, value, or collection."},{"occurrence":{"min":0},"name":"description","description":"Contains informative text describing the purpose of the enclosing element. Used primarily for user documentation of XML bean definition documents."},{"occurrence":{"min":0,"max":-1},"name":"bean","description":"Defines a single (usually named) bean. A bean definition may contain nested tags for constructor arguments, property values, lookup methods, and replaced methods. Mixing constructor injection and setter injection on the same bean is explicitly supported.","attributes":[{"name":"depends-on","type":"string","description":"The names of the beans that this bean depends on being initialized. The bean factory will guarantee that these beans get initialized before this bean. Note that dependencies are normally expressed through bean properties or constructor arguments. This property should just be necessary for other kinds of dependencies like statics (*ugh*) or database preparation on startup. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition.","required":false},{"name":"id","type":"string","description":"The unique identifier for a bean. A bean id may not be used more than once within the same \u003cbeans\u003e element.","required":false},{"name":"factory-bean","type":"string","description":"Alternative to class attribute for factory-method usage. If this is specified, no class attribute should be used. This must be set to the name of a bean in the current or ancestor factories that contains the relevant factory method. This allows the factory itself to be configured using Dependency Injection, and an instance (rather than static) method to be used.","required":false},{"name":"factory-method","type":"string","description":"The name of a factory method to use to create this object. Use constructor-arg elements to specify arguments to the factory method, if it takes arguments. Autowiring does not apply to factory methods. If the \"class\" attribute is present, the factory method will be a static method on the class specified by the \"class\" attribute on this bean definition. Often this will be the same class as that of the constructed object - for example, when the factory method is used as an alternative to a constructor. However, it may be on a different class. In that case, the created object will *not* be of the class specified in the \"class\" attribute. This is analogous to FactoryBean behavior. If the \"factory-bean\" attribute is present, the \"class\" attribute is not used, and the factory method will be an instance method on the object returned from a getBean call with the specified bean name. The factory bean may be defined as a singleton or a prototype. The factory method can have any number of arguments. Autowiring is not supported. Use indexed constructor-arg elements in conjunction with the factory-method attribute. Setter Injection can be used in conjunction with a factory method. Method Injection cannot, as the factory method returns an instance, which will be used when the container creates the bean.","required":false},{"name":"parent","type":"string","description":"The name of the parent bean definition. Will use the bean class of the parent if none is specified, but can also override it. In the latter case, the child bean class must be compatible with the parent, i.e. accept the parent\u0027s property values and constructor argument values, if any. A child bean definition will inherit constructor argument values, property values and method overrides from the parent, with the option to add new values. If init method, destroy method, factory bean and/or factory method are specified, they will override the corresponding parent settings. The remaining settings will always be taken from the child definition: depends on, autowire mode, scope, lazy init.","required":false},{"name":"lazy-init","type":"string","description":"Indicates whether this bean is to be lazily initialized. If \"false\", it will be instantiated on startup by bean factories that perform eager initialization of singletons. The effective default is \"false\". Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition. It can be shared through the \u0027default-lazy-init\u0027 attribute at the \u0027beans\u0027 level and potentially inherited from outer \u0027beans\u0027 defaults in case of nested \u0027beans\u0027 sections (e.g. with different profiles).","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"init-method","type":"string","description":"The name of the custom initialization method to invoke after setting bean properties. The method must have no arguments, but may throw any exception. This is an alternative to implementing Spring\u0027s InitializingBean interface or marking a method with the PostConstruct annotation.","required":false},{"name":"primary","type":"boolean","description":"Specifies that this bean should be given preference when multiple candidates are qualified to autowire a single-valued dependency. If exactly one \u0027primary\u0027 bean exists among the candidates, it will be the autowired value.","required":false},{"name":"name","type":"string","description":"Can be used to create one or more aliases illegal in an (XML) id. Multiple aliases can be separated by any number of spaces, commas, or semi-colons (or indeed any mixture of the three).","required":false},{"name":"autowire","type":"string","description":"Controls whether bean properties are \"autowired\". This is an automagical process in which bean references don\u0027t need to be coded explicitly in the XML bean definition file, but rather the Spring container works out dependencies. The effective default is \"no\". There are 4 modes: 1. \"no\" The traditional Spring default. No automagical wiring. Bean references must be defined in the XML file via the \u003cref/\u003e element (or \"ref\" attribute). We recommend this in most cases as it makes documentation more explicit. Note that this default mode also allows for annotation-driven autowiring, if activated. \"no\" refers to externally driven autowiring only, not affecting any autowiring demands that the bean class itself expresses. 2. \"byName\" Autowiring by property name. If a bean of class Cat exposes a \"dog\" property, Spring will try to set this to the value of the bean \"dog\" in the current container. If there is no matching bean by name, nothing special happens. 3. \"byType\" Autowiring if there is exactly one bean of the property type in the container. If there is more than one, a fatal error is raised, and you cannot use byType autowiring for that bean. If there is none, nothing special happens. 4. \"constructor\" Analogous to \"byType\" for constructor arguments. If there is not exactly one bean of the constructor argument type in the bean factory, a fatal error is raised. Note that explicit dependencies, i.e. \"property\" and \"constructor-arg\" elements, always override autowiring. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition. It can be shared through the \u0027default-autowire\u0027 attribute at the \u0027beans\u0027 level and potentially inherited from outer \u0027beans\u0027 defaults in case of nested \u0027beans\u0027 sections (e.g. with different profiles).","default":"default","required":false,"restriction":{"type":"enum","values":["default","no","byName","byType","constructor"]}},{"name":"abstract","type":"boolean","description":"Is this bean \"abstract\", that is, not meant to be instantiated itself but rather just serving as parent for concrete child bean definitions? The default is \"false\". Specify \"true\" to tell the bean factory to not try to instantiate that particular bean in any case. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per abstract bean definition.","required":false},{"name":"destroy-method","type":"string","description":"The name of the custom destroy method to invoke on bean factory shutdown. The method must have no arguments, but may throw any exception. This is an alternative to implementing Spring\u0027s DisposableBean interface or the standard Java Closeable/AutoCloseable interface, or marking a method with the PreDestroy annotation. Note: Only invoked on beans whose lifecycle is under the full control of the factory - which is always the case for singletons, but not guaranteed for any other scope.","required":false},{"name":"scope","type":"string","description":"The scope of this bean: typically \"singleton\" (one shared instance, which will be returned by all calls to getBean with the given id), or \"prototype\" (independent instance resulting from each call to getBean). By default, a bean will be a singleton, unless the bean has a parent bean definition in which case it will inherit the parent\u0027s scope. Singletons are most commonly used, and are ideal for multi-threaded service objects. Further scopes, such as \"request\" or \"session\", might be supported by extended bean factories (e.g. in a web environment). Inner bean definitions inherit the scope of their containing bean definition, unless explicitly specified: The inner bean will be a singleton if the containing bean is a singleton, and a prototype if the containing bean is a prototype, etc.","required":false},{"name":"autowire-candidate","type":"string","description":"Indicates whether or not this bean should be considered when looking for matching candidates to satisfy another bean\u0027s autowiring requirements. Note that this does not affect explicit references by name, which will get resolved even if the specified bean is not marked as an autowire candidate.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"class","type":"string","description":"The fully qualified name of the bean\u0027s class, except if it serves only as a parent definition for child bean definitions.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Defines a reference to another bean in this factory or an external factory (parent or included factory).","attributes":[{"name":"parent","type":"string","description":"The name of the referenced bean in a parent factory.","required":false},{"name":"bean","type":"string","description":"The name of the referenced bean.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"idref","description":"The id of another bean in this factory or an external factory (parent or included factory). While a regular \u0027value\u0027 element could instead be used for the same effect, using idref indicates that the Spring container should check that the value actually corresponds to a bean id.","attributes":[{"name":"bean","type":"string","description":"The name of the referenced bean.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"value","description":"Contains a string representation of a property value. The property may be a string, or may be converted to the required type using the JavaBeans PropertyEditor machinery. This makes it possible for application developers to write custom PropertyEditor implementations that can convert strings to arbitrary target objects. Note that this is recommended for simple objects only. Configure more complex objects by populating JavaBean properties with references to other beans.","attributes":[{"name":"type","type":"string","description":"The exact type that the value should be converted to. Only needed if the type of the target property or constructor argument is too generic: for example, in case of a collection element.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"null","description":"Denotes a Java null value. Necessary because an empty \"value\" tag will resolve to an empty String, which will not be resolved to a null value unless a special PropertyEditor does so."},{"occurrence":{"min":0,"max":-1},"name":"array","description":"An array can contain multiple inner bean, ref, collection, or value elements. This configuration element will always result in an array, even when being defined e.g. as a value for a map with value type Object.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"list","description":"A list can contain multiple inner bean, ref, collection, or value elements. A list can also map to an array type; the necessary conversion is performed automatically.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"set","description":"A set can contain multiple inner bean, ref, collection, or value elements.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"map","description":"A mapping from a key to an object. Maps may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"key-type","type":"string","description":"The default Java type for nested entry keys. Must be a fully qualified class name.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"props","description":"Props elements differ from map elements in that values must be strings. Props may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]}]}}]}}]}},{"occurrence":{"min":0,"max":-1},"name":"mapping","description":"If the values returned by the XPath Expression do not represent the channel names themselves, additional mappings can be specified using the \"mapping\" sub-element. For example if the \u0027/request/responders\u0027 expression results in two values: \u0027responderA\u0027 and \u0027responderB\u0027, but you don\u0027t want to couple the responder names to channel names you may provide additional mappings such as: \u003cint-xml:mapping value\u003d\"responderA\" channel\u003d\"channelA\"/\u003e \u003cint-xml:mapping value\u003d\"responderB\" channel\u003d\"channelB\"/\u003e ","attributes":[{"name":"channel","type":"string","description":"A reference to a bean that defines a Message Channel (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","required":false},{"name":"value","type":"string","description":"A value of the evaluation token that will be mapped to a channel reference (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","required":false}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"xpath-transformer","description":"Defines an XPath (\u0027org.springframework.integration.xml.transformer.XPathTransformer\u0027) transformer.","attributes":[{"name":"xpath-expression-ref","type":"string","description":"Reference to the XPathExpression instance to be evaluated against the input Message\u0027s payload. Either this or \u0027xpath-expression\u0027 must be provided, but not both.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"node-mapper","type":"string","description":"Reference to a NodeMapper. If this is provided, the \u0027evaluation-type\u0027 will be ignored. Instead, the org.springframework.xml.xpath.XPathExpression\u0027s evaluateAsObject(Node node, NodeMapper nodeMapper) method will be invoked.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"xpath-expression","type":"string","description":"The XPath expression string to be evaluated against the input Message\u0027s payload. Either this or \u0027xpath-expression-ref\u0027 must be provided, but not both.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"evaluation-type","type":"string","description":"The result type expected from the XPath evaluation. This will be the payload type of the output Message.","default":"STRING_RESULT","required":false,"restriction":{"type":"enum","values":["BOOLEAN_RESULT","STRING_RESULT","NUMBER_RESULT","NODE_RESULT","NODE_LIST_RESULT"]}},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"converter","type":"string","description":"Specify the XmlPayloadConverter to use when converting a Message payload prior to XPath evaluation. The DefaultXmlPayloadConverter is used if this reference is not provided, and it should be sufficient in most cases since it can convert from Node, Document, Source, File, and String typed payloads. If you need to extend beyond the capabilities of that default implementation, then an upstream Transformer is probably a better option than providing a reference to a custom implementation of this strategy here.","required":false}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"xslt-transformer","description":"Defines an XSLT (\u0027org.springframework.integration.xml.transformer.XsltPayloadTransformer\u0027) transformer.","attributes":[{"name":"xsl-templates","type":"string","description":"Reference to a Templates instance. Either this attribute or the \u0027xsl-resource\u0027 attribute MUST be specified.","required":false},{"name":"result-type","type":"string","description":"This attribute can be used to control the type of result created. If this attribute is provided, you must not specify the \u0027result-factory\u0027 attribute. If neither this property nor the \u0027result-factory\u0027 attribute are provided, \u0027DomResult\u0027 will be used.","required":false,"restriction":{"type":"enum","values":["DOMResult","StringResult"]}},{"name":"result-factory","type":"string","description":"Reference to a custom implementation of \u0027ResultFactory\u0027. If this attribute is provided, you must not specify the \u0027result-type\u0027 attribute.","required":false},{"name":"xslt-param-headers","type":"string","description":"If message header names match 1:1 to parameter names, you can use this attribute to make the parameters available. The use of wildcards for simple pattern matching is also possible. It supports the following simple pattern styles: \u0027xxx*\u0027, \u0027*xxx\u0027, \u0027*xxx*\u0027 and \u0027xxx*yyy\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"transformer-factory-class","type":"string","description":"A fully qualified class name to a transformer factory class that overrides the current JVM default.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"xsl-resource","type":"string","description":"Allows you to specify a org.springframework.core.io.Resource, which will be used to create the javax.xml.transform.Templates instance. Either this attribute or the \u0027xsl-templates\u0027 attribute MUST be specified.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"result-transformer","type":"string","description":"If the XSLT transformation returns a \u0027Result\u0027 object, than you have the option to specify a reference to a \u0027ResultTransformer\u0027 instance. This allows you to transform the \u0027Result\u0027 into another format. By default 2 implementations are available: - \u0027ResultToDocumentTransformer\u0027 and - \u0027ResultToStringTransformer\u0027","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"source-factory","type":"string","description":"Reference to a \u0027SourceFactory\u0027 instance. Allows for the custom conversion to a javax.xml.transform.Source If not set, this property will internally default to \u0027DomSourceFactory\u0027.","required":false}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0,"max":-1},"name":"xslt-param","description":"Allows to configure individual Xslt parameters. There the \u0027expression\u0027 and \u0027value\u0027 attribute are available. The expression attribute should be any valid SpEL expression with the message being the root object of the expression evaluation context. The value attribute, just like any value in Spring beans, allows you to specify simple static values. You can also use property placeholders (e.g., ${some.value}).","attributes":[{"name":"expression","type":"string","required":false},{"name":"value","type":"string","required":false},{"name":"name","type":"string","required":true}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"xpath-header-enricher","description":"Defines an \u0027org.springframework.integration.xml.transformer.XPathHeaderEnricher\u0027 that evaluates XPath expressions against the message payload and inserts the result of the evaluation into a message header.","attributes":[{"name":"should-skip-nulls","type":"boolean","description":"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.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"converter","type":"string","description":"Specify the XmlPayloadConverter to use when converting a Message payload prior to XPath evaluation. The DefaultXmlPayloadConverter is used if this reference is not provided, and it should be sufficient in most cases since it can convert from Node, Document, Source, File, and String typed payloads.","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"default-overwrite","type":"boolean","description":"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 \u0027overwrite\u0027 attribute. If the \u0027default-overwrite\u0027 attribute is not provided, then the specified header values will NOT overwrite any existing ones with the same header names.","required":false}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"max":-1},"name":"header","description":"Defines an XPath expression to be configured within an \u003cxpath-header-enricher/\u003e element.","attributes":[{"name":"header-type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"xpath-expression-ref","type":"string","description":"The XPath Expression reference. Either this or \u0027xpath-expression\u0027 must be provided, but not both.","required":false},{"name":"name","type":"string","description":"The name of the header to be enriched.","required":true},{"name":"xpath-expression","type":"string","description":"The XPath Expression as a String. Either this or \u0027xpath-expression-ref\u0027 must be provided, but not both.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name if already present on the input Message.","required":false},{"name":"evaluation-type","type":"string","description":"The result type expected from the XPath evaluation. This will be the type of the header value.","default":"STRING_RESULT","required":false,"restriction":{"type":"enum","values":["BOOLEAN_RESULT","STRING_RESULT","NUMBER_RESULT","NODE_RESULT","NODE_LIST_RESULT"]}}]},{"occurrence":{"min":0,"max":-1},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"tee","name":"xpath-splitter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.xml.splitter.XPathMessageSplitter\u0027","attributes":[{"name":"iterator","type":"boolean","description":"The iterator mode: \u0027true\u0027 (default) to return an \u0027java.util.Iterator\u0027 for splitting \u0027payload\u0027, \u0027false to return a \u0027java.util.List\u0027. Note: the \u0027list\u0027 contains transformed nodes whereas with the \u0027iterator\u0027 each node is transformed while iterating.","default":"true","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"xpath-expression-ref","type":"string","required":false},{"name":"doc-builder-factory","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"create-documents","type":"boolean","description":"Set this flag to \u0027true\u0027 to convert each resuling Node to a Document before sending replies from this splitter. Default is \u0027false\u0027","default":"false","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"discard-channel","type":"string","description":"The channel where the splitter will send the messages that return an empty container from split function.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"output-properties","type":"string","description":"A set of output properties that will be used to override any of the same properties in effect for the transformation.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"apply-sequence","type":"boolean","description":"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. When true, existing correlation and sequence related headers are pushed onto a stack; downstream components, such as aggregators may pop the stack to revert the existing headers after aggregation. Default is \u0027true\u0027.","default":"true","required":false}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"xpath-expression","description":"Defines an XPath expression - \u0027org.springframework.xml.xpath.XPathExpressionFactory\u0027 with the \u0027createXPathExpression()\u0027 factory-method. Internally XPath expressions will be evaluated as NODESET type and converted to a List\u003cString\u003e representing channel names. Typically such a list will contain a single channel name. However, based on the result of an XPath Expression the XPath router can also take on the characteristics of the Recipient List Router if the XPath Expression returns more than one value, thus resulting in the List\u003cString\u003e containing more than one channel name. In that case the Message will be sent to all channels in the list.","attributes":[{"name":"namespace-map","type":"string","required":false},{"name":"expression","type":"string","required":true},{"name":"id","type":"string","required":false},{"name":"ns-uri","type":"string","required":false},{"name":"ns-prefix","type":"string","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"map","description":"A mapping from a key to an object. Maps may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"key-type","type":"string","description":"The default Java type for nested entry keys. Must be a fully qualified class name.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"description","description":"Contains informative text describing the purpose of the enclosing element. Used primarily for user documentation of XML bean definition documents.","childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[]}},{"occurrence":{"min":0,"max":-1},"name":"entry","description":"A map entry can be an inner bean, ref, value, or collection. The key of the entry is given by the \"key\" attribute or child element.","attributes":[{"name":"value","type":"string","description":"A short-cut alternative to a nested \"\u003cvalue\u003e...\u003c/value\u003e\" element.","required":false},{"name":"key-ref","type":"string","description":"A short-cut alternative to a to a \"key\" element with a nested \"\u003cref bean\u003d\u0027...\u0027/\u003e\".","required":false},{"name":"value-ref","type":"string","description":"A short-cut alternative to a nested \"\u003cref bean\u003d\u0027...\u0027/\u003e\".","required":false},{"name":"value-type","type":"string","description":"A short-cut alternative to a \u0027type\u0027 attribute on a nested \"\u003cvalue type\u003d\u0027...\u0027 \u003e...\u003c/value\u003e\" element.","required":false},{"name":"key","type":"string","description":"Each map element must specify its key as attribute or as child element. A key attribute is always a String value.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"key","description":"A key element can contain an inner bean, ref, value, or collection."},{"occurrence":{"min":0},"name":"description","description":"Contains informative text describing the purpose of the enclosing element. Used primarily for user documentation of XML bean definition documents."},{"occurrence":{"min":0,"max":-1},"name":"bean","description":"Defines a single (usually named) bean. A bean definition may contain nested tags for constructor arguments, property values, lookup methods, and replaced methods. Mixing constructor injection and setter injection on the same bean is explicitly supported.","attributes":[{"name":"depends-on","type":"string","description":"The names of the beans that this bean depends on being initialized. The bean factory will guarantee that these beans get initialized before this bean. Note that dependencies are normally expressed through bean properties or constructor arguments. This property should just be necessary for other kinds of dependencies like statics (*ugh*) or database preparation on startup. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition.","required":false},{"name":"id","type":"string","description":"The unique identifier for a bean. A bean id may not be used more than once within the same \u003cbeans\u003e element.","required":false},{"name":"factory-bean","type":"string","description":"Alternative to class attribute for factory-method usage. If this is specified, no class attribute should be used. This must be set to the name of a bean in the current or ancestor factories that contains the relevant factory method. This allows the factory itself to be configured using Dependency Injection, and an instance (rather than static) method to be used.","required":false},{"name":"factory-method","type":"string","description":"The name of a factory method to use to create this object. Use constructor-arg elements to specify arguments to the factory method, if it takes arguments. Autowiring does not apply to factory methods. If the \"class\" attribute is present, the factory method will be a static method on the class specified by the \"class\" attribute on this bean definition. Often this will be the same class as that of the constructed object - for example, when the factory method is used as an alternative to a constructor. However, it may be on a different class. In that case, the created object will *not* be of the class specified in the \"class\" attribute. This is analogous to FactoryBean behavior. If the \"factory-bean\" attribute is present, the \"class\" attribute is not used, and the factory method will be an instance method on the object returned from a getBean call with the specified bean name. The factory bean may be defined as a singleton or a prototype. The factory method can have any number of arguments. Autowiring is not supported. Use indexed constructor-arg elements in conjunction with the factory-method attribute. Setter Injection can be used in conjunction with a factory method. Method Injection cannot, as the factory method returns an instance, which will be used when the container creates the bean.","required":false},{"name":"parent","type":"string","description":"The name of the parent bean definition. Will use the bean class of the parent if none is specified, but can also override it. In the latter case, the child bean class must be compatible with the parent, i.e. accept the parent\u0027s property values and constructor argument values, if any. A child bean definition will inherit constructor argument values, property values and method overrides from the parent, with the option to add new values. If init method, destroy method, factory bean and/or factory method are specified, they will override the corresponding parent settings. The remaining settings will always be taken from the child definition: depends on, autowire mode, scope, lazy init.","required":false},{"name":"lazy-init","type":"string","description":"Indicates whether this bean is to be lazily initialized. If \"false\", it will be instantiated on startup by bean factories that perform eager initialization of singletons. The effective default is \"false\". Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition. It can be shared through the \u0027default-lazy-init\u0027 attribute at the \u0027beans\u0027 level and potentially inherited from outer \u0027beans\u0027 defaults in case of nested \u0027beans\u0027 sections (e.g. with different profiles).","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"init-method","type":"string","description":"The name of the custom initialization method to invoke after setting bean properties. The method must have no arguments, but may throw any exception. This is an alternative to implementing Spring\u0027s InitializingBean interface or marking a method with the PostConstruct annotation.","required":false},{"name":"primary","type":"boolean","description":"Specifies that this bean should be given preference when multiple candidates are qualified to autowire a single-valued dependency. If exactly one \u0027primary\u0027 bean exists among the candidates, it will be the autowired value.","required":false},{"name":"name","type":"string","description":"Can be used to create one or more aliases illegal in an (XML) id. Multiple aliases can be separated by any number of spaces, commas, or semi-colons (or indeed any mixture of the three).","required":false},{"name":"autowire","type":"string","description":"Controls whether bean properties are \"autowired\". This is an automagical process in which bean references don\u0027t need to be coded explicitly in the XML bean definition file, but rather the Spring container works out dependencies. The effective default is \"no\". There are 4 modes: 1. \"no\" The traditional Spring default. No automagical wiring. Bean references must be defined in the XML file via the \u003cref/\u003e element (or \"ref\" attribute). We recommend this in most cases as it makes documentation more explicit. Note that this default mode also allows for annotation-driven autowiring, if activated. \"no\" refers to externally driven autowiring only, not affecting any autowiring demands that the bean class itself expresses. 2. \"byName\" Autowiring by property name. If a bean of class Cat exposes a \"dog\" property, Spring will try to set this to the value of the bean \"dog\" in the current container. If there is no matching bean by name, nothing special happens. 3. \"byType\" Autowiring if there is exactly one bean of the property type in the container. If there is more than one, a fatal error is raised, and you cannot use byType autowiring for that bean. If there is none, nothing special happens. 4. \"constructor\" Analogous to \"byType\" for constructor arguments. If there is not exactly one bean of the constructor argument type in the bean factory, a fatal error is raised. Note that explicit dependencies, i.e. \"property\" and \"constructor-arg\" elements, always override autowiring. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition. It can be shared through the \u0027default-autowire\u0027 attribute at the \u0027beans\u0027 level and potentially inherited from outer \u0027beans\u0027 defaults in case of nested \u0027beans\u0027 sections (e.g. with different profiles).","default":"default","required":false,"restriction":{"type":"enum","values":["default","no","byName","byType","constructor"]}},{"name":"abstract","type":"boolean","description":"Is this bean \"abstract\", that is, not meant to be instantiated itself but rather just serving as parent for concrete child bean definitions? The default is \"false\". Specify \"true\" to tell the bean factory to not try to instantiate that particular bean in any case. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per abstract bean definition.","required":false},{"name":"destroy-method","type":"string","description":"The name of the custom destroy method to invoke on bean factory shutdown. The method must have no arguments, but may throw any exception. This is an alternative to implementing Spring\u0027s DisposableBean interface or the standard Java Closeable/AutoCloseable interface, or marking a method with the PreDestroy annotation. Note: Only invoked on beans whose lifecycle is under the full control of the factory - which is always the case for singletons, but not guaranteed for any other scope.","required":false},{"name":"scope","type":"string","description":"The scope of this bean: typically \"singleton\" (one shared instance, which will be returned by all calls to getBean with the given id), or \"prototype\" (independent instance resulting from each call to getBean). By default, a bean will be a singleton, unless the bean has a parent bean definition in which case it will inherit the parent\u0027s scope. Singletons are most commonly used, and are ideal for multi-threaded service objects. Further scopes, such as \"request\" or \"session\", might be supported by extended bean factories (e.g. in a web environment). Inner bean definitions inherit the scope of their containing bean definition, unless explicitly specified: The inner bean will be a singleton if the containing bean is a singleton, and a prototype if the containing bean is a prototype, etc.","required":false},{"name":"autowire-candidate","type":"string","description":"Indicates whether or not this bean should be considered when looking for matching candidates to satisfy another bean\u0027s autowiring requirements. Note that this does not affect explicit references by name, which will get resolved even if the specified bean is not marked as an autowire candidate.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"class","type":"string","description":"The fully qualified name of the bean\u0027s class, except if it serves only as a parent definition for child bean definitions.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Defines a reference to another bean in this factory or an external factory (parent or included factory).","attributes":[{"name":"parent","type":"string","description":"The name of the referenced bean in a parent factory.","required":false},{"name":"bean","type":"string","description":"The name of the referenced bean.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"idref","description":"The id of another bean in this factory or an external factory (parent or included factory). While a regular \u0027value\u0027 element could instead be used for the same effect, using idref indicates that the Spring container should check that the value actually corresponds to a bean id.","attributes":[{"name":"bean","type":"string","description":"The name of the referenced bean.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"value","description":"Contains a string representation of a property value. The property may be a string, or may be converted to the required type using the JavaBeans PropertyEditor machinery. This makes it possible for application developers to write custom PropertyEditor implementations that can convert strings to arbitrary target objects. Note that this is recommended for simple objects only. Configure more complex objects by populating JavaBean properties with references to other beans.","attributes":[{"name":"type","type":"string","description":"The exact type that the value should be converted to. Only needed if the type of the target property or constructor argument is too generic: for example, in case of a collection element.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"null","description":"Denotes a Java null value. Necessary because an empty \"value\" tag will resolve to an empty String, which will not be resolved to a null value unless a special PropertyEditor does so."},{"occurrence":{"min":0,"max":-1},"name":"array","description":"An array can contain multiple inner bean, ref, collection, or value elements. This configuration element will always result in an array, even when being defined e.g. as a value for a map with value type Object.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"list","description":"A list can contain multiple inner bean, ref, collection, or value elements. A list can also map to an array type; the necessary conversion is performed automatically.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"set","description":"A set can contain multiple inner bean, ref, collection, or value elements.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"map","description":"A mapping from a key to an object. Maps may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"key-type","type":"string","description":"The default Java type for nested entry keys. Must be a fully qualified class name.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"props","description":"Props elements differ from map elements in that values must be strings. Props may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]}]}}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"xpath-expression","description":"Defines an XPath expression - \u0027org.springframework.xml.xpath.XPathExpressionFactory\u0027 with the \u0027createXPathExpression()\u0027 factory-method. Internally XPath expressions will be evaluated as NODESET type and converted to a List\u003cString\u003e representing channel names. Typically such a list will contain a single channel name. However, based on the result of an XPath Expression the XPath router can also take on the characteristics of the Recipient List Router if the XPath Expression returns more than one value, thus resulting in the List\u003cString\u003e containing more than one channel name. In that case the Message will be sent to all channels in the list."},{"role":"router","connectionType":"tee","name":"validating-filter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.filter.MessageFilter\u0027 with an \u0027org.springframework.integration.xml.selector.XmlValidatingMessageSelector\u0027","attributes":[{"name":"xml-validator","type":"string","description":"Reference to a custom \u0027org.springframework.xml.validation.XmlValidator\u0027 strategy","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"discard-channel","type":"string","description":"Message Channel where you want rejected messages to be sent.","required":false},{"name":"id","type":"string","required":false},{"name":"schema-type","type":"string","default":"xml-schema","required":false,"restriction":{"type":"enum","values":["xml-schema","relax-ng"]}},{"name":"schema-location","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"xml-converter","type":"string","description":"Reference to a custom \u0027org.springframework.integration.xml.XmlPayloadConverter\u0027 strategy","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"throw-exception-on-rejection","type":"boolean","default":"false","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"marshalling-transformer","description":"Defines an XML (\u0027org.springframework.integration.xml.transformer.MarshallingTransformer\u0027) marshalling transformer.","attributes":[{"name":"result-factory","type":"string","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"extract-payload","type":"string","description":"Specify whether to extract the payload before passing to the Marshaller. By default, this value is \"true\". To have the full Message passed instead, set this to \"false\".","default":"true","required":false},{"name":"result-transformer","type":"string","required":false},{"name":"marshaller","type":"string","required":true},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"result-type","type":"string","required":false,"restriction":{"type":"enum","values":["DOMResult","StringResult"]}}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"router","connectionType":"tee","name":"xpath-filter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.filter.MessageFilter\u0027 with an \u0027org.springframework.integration.xml.selector.AbstractXPathMessageSelector\u0027 implementation based on the configuration options. If the XPath expression will evaluate to a boolean, no configuration attributes are required. If the XPath expression will evaluate to a String, a \"match-value\" should be provided against which the evaluation result will be matched. There are three options for the \"match-type\": exact, case-insensitive, and regex. These correspond to the equals, equals-ignore-case, and matches operations on java.lang.String, respectively. When providing a \u0027match-type\u0027 value of \u0027regex\u0027, the value provided in \u0027match-value\u0027 must be a valid Regular Expression.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"discard-channel","type":"string","description":"Message Channel where you want rejected messages to be sent.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"match-type","type":"string","description":"Type of match to apply between the XPath evaluation result and the \u0027match-value\u0027. Default is \"exact\".","default":"exact","required":false,"restriction":{"type":"enum","values":["exact","case-insensitive","regex"]}},{"name":"xpath-expression-ref","type":"string","description":"Reference to an XPath expression instance to evaluate.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"match-value","type":"string","description":"String value to be matched against the XPath evaluation result. If this is not provided, then the XPath evaluation MUST produce a boolean result directly.","required":false},{"name":"throw-exception-on-rejection","type":"boolean","default":"false","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}},{"name":"xpath-expression","description":"Defines an XPath expression - \u0027org.springframework.xml.xpath.XPathExpressionFactory\u0027 with the \u0027createXPathExpression()\u0027 factory-method. Internally XPath expressions will be evaluated as NODESET type and converted to a List\u003cString\u003e representing channel names. Typically such a list will contain a single channel name. However, based on the result of an XPath Expression the XPath router can also take on the characteristics of the Recipient List Router if the XPath Expression returns more than one value, thus resulting in the List\u003cString\u003e containing more than one channel name. In that case the Message will be sent to all channels in the list.","attributes":[{"name":"namespace-map","type":"string","required":false},{"name":"expression","type":"string","required":true},{"name":"id","type":"string","required":false},{"name":"ns-uri","type":"string","required":false},{"name":"ns-prefix","type":"string","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"map","description":"A mapping from a key to an object. Maps may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"key-type","type":"string","description":"The default Java type for nested entry keys. Must be a fully qualified class name.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"description","description":"Contains informative text describing the purpose of the enclosing element. Used primarily for user documentation of XML bean definition documents.","childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[]}},{"occurrence":{"min":0,"max":-1},"name":"entry","description":"A map entry can be an inner bean, ref, value, or collection. The key of the entry is given by the \"key\" attribute or child element.","attributes":[{"name":"value","type":"string","description":"A short-cut alternative to a nested \"\u003cvalue\u003e...\u003c/value\u003e\" element.","required":false},{"name":"key-ref","type":"string","description":"A short-cut alternative to a to a \"key\" element with a nested \"\u003cref bean\u003d\u0027...\u0027/\u003e\".","required":false},{"name":"value-ref","type":"string","description":"A short-cut alternative to a nested \"\u003cref bean\u003d\u0027...\u0027/\u003e\".","required":false},{"name":"value-type","type":"string","description":"A short-cut alternative to a \u0027type\u0027 attribute on a nested \"\u003cvalue type\u003d\u0027...\u0027 \u003e...\u003c/value\u003e\" element.","required":false},{"name":"key","type":"string","description":"Each map element must specify its key as attribute or as child element. A key attribute is always a String value.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"key","description":"A key element can contain an inner bean, ref, value, or collection."},{"occurrence":{"min":0},"name":"description","description":"Contains informative text describing the purpose of the enclosing element. Used primarily for user documentation of XML bean definition documents."},{"occurrence":{"min":0,"max":-1},"name":"bean","description":"Defines a single (usually named) bean. A bean definition may contain nested tags for constructor arguments, property values, lookup methods, and replaced methods. Mixing constructor injection and setter injection on the same bean is explicitly supported.","attributes":[{"name":"depends-on","type":"string","description":"The names of the beans that this bean depends on being initialized. The bean factory will guarantee that these beans get initialized before this bean. Note that dependencies are normally expressed through bean properties or constructor arguments. This property should just be necessary for other kinds of dependencies like statics (*ugh*) or database preparation on startup. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition.","required":false},{"name":"id","type":"string","description":"The unique identifier for a bean. A bean id may not be used more than once within the same \u003cbeans\u003e element.","required":false},{"name":"factory-bean","type":"string","description":"Alternative to class attribute for factory-method usage. If this is specified, no class attribute should be used. This must be set to the name of a bean in the current or ancestor factories that contains the relevant factory method. This allows the factory itself to be configured using Dependency Injection, and an instance (rather than static) method to be used.","required":false},{"name":"factory-method","type":"string","description":"The name of a factory method to use to create this object. Use constructor-arg elements to specify arguments to the factory method, if it takes arguments. Autowiring does not apply to factory methods. If the \"class\" attribute is present, the factory method will be a static method on the class specified by the \"class\" attribute on this bean definition. Often this will be the same class as that of the constructed object - for example, when the factory method is used as an alternative to a constructor. However, it may be on a different class. In that case, the created object will *not* be of the class specified in the \"class\" attribute. This is analogous to FactoryBean behavior. If the \"factory-bean\" attribute is present, the \"class\" attribute is not used, and the factory method will be an instance method on the object returned from a getBean call with the specified bean name. The factory bean may be defined as a singleton or a prototype. The factory method can have any number of arguments. Autowiring is not supported. Use indexed constructor-arg elements in conjunction with the factory-method attribute. Setter Injection can be used in conjunction with a factory method. Method Injection cannot, as the factory method returns an instance, which will be used when the container creates the bean.","required":false},{"name":"parent","type":"string","description":"The name of the parent bean definition. Will use the bean class of the parent if none is specified, but can also override it. In the latter case, the child bean class must be compatible with the parent, i.e. accept the parent\u0027s property values and constructor argument values, if any. A child bean definition will inherit constructor argument values, property values and method overrides from the parent, with the option to add new values. If init method, destroy method, factory bean and/or factory method are specified, they will override the corresponding parent settings. The remaining settings will always be taken from the child definition: depends on, autowire mode, scope, lazy init.","required":false},{"name":"lazy-init","type":"string","description":"Indicates whether this bean is to be lazily initialized. If \"false\", it will be instantiated on startup by bean factories that perform eager initialization of singletons. The effective default is \"false\". Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition. It can be shared through the \u0027default-lazy-init\u0027 attribute at the \u0027beans\u0027 level and potentially inherited from outer \u0027beans\u0027 defaults in case of nested \u0027beans\u0027 sections (e.g. with different profiles).","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"init-method","type":"string","description":"The name of the custom initialization method to invoke after setting bean properties. The method must have no arguments, but may throw any exception. This is an alternative to implementing Spring\u0027s InitializingBean interface or marking a method with the PostConstruct annotation.","required":false},{"name":"primary","type":"boolean","description":"Specifies that this bean should be given preference when multiple candidates are qualified to autowire a single-valued dependency. If exactly one \u0027primary\u0027 bean exists among the candidates, it will be the autowired value.","required":false},{"name":"name","type":"string","description":"Can be used to create one or more aliases illegal in an (XML) id. Multiple aliases can be separated by any number of spaces, commas, or semi-colons (or indeed any mixture of the three).","required":false},{"name":"autowire","type":"string","description":"Controls whether bean properties are \"autowired\". This is an automagical process in which bean references don\u0027t need to be coded explicitly in the XML bean definition file, but rather the Spring container works out dependencies. The effective default is \"no\". There are 4 modes: 1. \"no\" The traditional Spring default. No automagical wiring. Bean references must be defined in the XML file via the \u003cref/\u003e element (or \"ref\" attribute). We recommend this in most cases as it makes documentation more explicit. Note that this default mode also allows for annotation-driven autowiring, if activated. \"no\" refers to externally driven autowiring only, not affecting any autowiring demands that the bean class itself expresses. 2. \"byName\" Autowiring by property name. If a bean of class Cat exposes a \"dog\" property, Spring will try to set this to the value of the bean \"dog\" in the current container. If there is no matching bean by name, nothing special happens. 3. \"byType\" Autowiring if there is exactly one bean of the property type in the container. If there is more than one, a fatal error is raised, and you cannot use byType autowiring for that bean. If there is none, nothing special happens. 4. \"constructor\" Analogous to \"byType\" for constructor arguments. If there is not exactly one bean of the constructor argument type in the bean factory, a fatal error is raised. Note that explicit dependencies, i.e. \"property\" and \"constructor-arg\" elements, always override autowiring. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition. It can be shared through the \u0027default-autowire\u0027 attribute at the \u0027beans\u0027 level and potentially inherited from outer \u0027beans\u0027 defaults in case of nested \u0027beans\u0027 sections (e.g. with different profiles).","default":"default","required":false,"restriction":{"type":"enum","values":["default","no","byName","byType","constructor"]}},{"name":"abstract","type":"boolean","description":"Is this bean \"abstract\", that is, not meant to be instantiated itself but rather just serving as parent for concrete child bean definitions? The default is \"false\". Specify \"true\" to tell the bean factory to not try to instantiate that particular bean in any case. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per abstract bean definition.","required":false},{"name":"destroy-method","type":"string","description":"The name of the custom destroy method to invoke on bean factory shutdown. The method must have no arguments, but may throw any exception. This is an alternative to implementing Spring\u0027s DisposableBean interface or the standard Java Closeable/AutoCloseable interface, or marking a method with the PreDestroy annotation. Note: Only invoked on beans whose lifecycle is under the full control of the factory - which is always the case for singletons, but not guaranteed for any other scope.","required":false},{"name":"scope","type":"string","description":"The scope of this bean: typically \"singleton\" (one shared instance, which will be returned by all calls to getBean with the given id), or \"prototype\" (independent instance resulting from each call to getBean). By default, a bean will be a singleton, unless the bean has a parent bean definition in which case it will inherit the parent\u0027s scope. Singletons are most commonly used, and are ideal for multi-threaded service objects. Further scopes, such as \"request\" or \"session\", might be supported by extended bean factories (e.g. in a web environment). Inner bean definitions inherit the scope of their containing bean definition, unless explicitly specified: The inner bean will be a singleton if the containing bean is a singleton, and a prototype if the containing bean is a prototype, etc.","required":false},{"name":"autowire-candidate","type":"string","description":"Indicates whether or not this bean should be considered when looking for matching candidates to satisfy another bean\u0027s autowiring requirements. Note that this does not affect explicit references by name, which will get resolved even if the specified bean is not marked as an autowire candidate.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"class","type":"string","description":"The fully qualified name of the bean\u0027s class, except if it serves only as a parent definition for child bean definitions.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Defines a reference to another bean in this factory or an external factory (parent or included factory).","attributes":[{"name":"parent","type":"string","description":"The name of the referenced bean in a parent factory.","required":false},{"name":"bean","type":"string","description":"The name of the referenced bean.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"idref","description":"The id of another bean in this factory or an external factory (parent or included factory). While a regular \u0027value\u0027 element could instead be used for the same effect, using idref indicates that the Spring container should check that the value actually corresponds to a bean id.","attributes":[{"name":"bean","type":"string","description":"The name of the referenced bean.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"value","description":"Contains a string representation of a property value. The property may be a string, or may be converted to the required type using the JavaBeans PropertyEditor machinery. This makes it possible for application developers to write custom PropertyEditor implementations that can convert strings to arbitrary target objects. Note that this is recommended for simple objects only. Configure more complex objects by populating JavaBean properties with references to other beans.","attributes":[{"name":"type","type":"string","description":"The exact type that the value should be converted to. Only needed if the type of the target property or constructor argument is too generic: for example, in case of a collection element.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"null","description":"Denotes a Java null value. Necessary because an empty \"value\" tag will resolve to an empty String, which will not be resolved to a null value unless a special PropertyEditor does so."},{"occurrence":{"min":0,"max":-1},"name":"array","description":"An array can contain multiple inner bean, ref, collection, or value elements. This configuration element will always result in an array, even when being defined e.g. as a value for a map with value type Object.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"list","description":"A list can contain multiple inner bean, ref, collection, or value elements. A list can also map to an array type; the necessary conversion is performed automatically.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"set","description":"A set can contain multiple inner bean, ref, collection, or value elements.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"map","description":"A mapping from a key to an object. Maps may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"key-type","type":"string","description":"The default Java type for nested entry keys. Must be a fully qualified class name.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"props","description":"Props elements differ from map elements in that values must be strings. Props may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]}]}}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"unmarshalling-transformer","description":"Defines an XML (\u0027org.springframework.integration.xml.transformer.UnmarshallingTransformer\u0027) unmarshalling transformer.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"unmarshaller","type":"string","required":true},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}}]}
\ No newline at end of file
+{"file":[{"role":"transformer","connectionType":"passthru","name":"file-to-string-transformer","description":"Creates a \u0027org.springframework.integration.file.transformer.FileToStringTransformer\u0027 that converts a File payload to a String.","attributes":[{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition (EventDrivenConsumer)","required":false},{"name":"charset","type":"string","description":" Set the charset name to use when converting a File payload to a String, e.g. charset\u003d\"UTF-8\". If not set, the default charset of this Java virtual machine is used. ","required":false},{"name":"input-channel","type":"string","description":" The input channel of the transformer. ","required":false},{"name":"delete-files","type":"string","description":" The delete-files option signals to the transformer that it should delete the inbound File after the transformation is complete. ","required":false},{"name":"output-channel","type":"string","description":" The channel to which the transformer will send the transformed message. Optional, because incoming messages can specify a reply channel using the \u0027replyChannel\u0027 message header value themselves. ","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.file.FileWritingMessageHandler\u0027 with \u0027expectReply \u003d false\u0027 that writes Message payloads to a File.","attributes":[{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the destination directory if it does not yet exist when this adapter is being initialized. The default value is \u0027true\u0027. If set to \u0027false\u0027 and the directory does not exist upon initialization, an Exception will be thrown.","default":"true","required":false},{"name":"preserve-timestamp","type":"string","description":"Specify whether to preserve the modified timestamp from the source file on the destination file after copying. Applies to \u0027java.io.File\u0027 payloads. For other payload types, the optional \u0027file_setModified\u0027 header will be used, if present (and a \u0027Number\u0027), to set the lastModified time. By default, the timestamp will NOT be preserved.","default":"false","required":false},{"name":"filename-generator-expression","type":"string","description":"Allows you to provide a SpEL expression which will compute the file name of the target file (e.g., assuming payload is java.io.File \"payload.name + \u0027.transferred\u0027\");","required":false},{"name":"append-new-line","type":"string","description":"Set to \u0027true\u0027 to append a new-line after each write. It is \u0027false\u0027 by default.","default":"false","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition (EventDrivenConsumer)","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"mode","type":"string","description":"This attribute defaults to \u0027REPLACE\u0027 if not set explicitly. The following options are available: APPEND: If append is specified, the data will be appended to the existing file if such file exists, otherwise the new file will be created as usual but, once created, the subsequent data will be appended to it. This attribute is mutually exclusive with the use of a temporary file, since append is done to the actual file and not its temporary counterpart. The file is closed after each write. If set to APPEND, the component will also use instance of the LockRegistry to ensure that there are no collisions when multiple threads are writing to the same file. APPEND_NO_FLUSH: Same as \u0027APPEND\u0027 but the data is not flushed or the file closed. This can significantly improve performance at the risk of lost data in the event of a failure. Various strategies are available for flushing the data and closing the file. Refer to the reference documentation for more information. FAIL: If the target file exists, a MessageHandlingException is thrown. IGNORE: If the target file exists, the message payload is silently ignored. REPLACE: This is the default behavior when writing files. If the target file already exists, it will be overwritten. REPLACE_IF_MODIFIED: If the local file already exists, it will be overwritten only if the last modified timestamp does not match the source timestamp. Only applies to local files.","required":false,"restriction":{"type":"enum","values":["REPLACE","REPLACE_IF_MODIFIED","APPEND","APPEND_NO_FLUSH","FAIL","IGNORE"]}},{"name":"flush-interval","type":"string","description":"When using \u0027mode\u003dAPPEND_NO_FLUSH\u0027, if this time (ms) elapses without any new writes, the data is flushed and the file closed. Default 30000.","required":false},{"name":"flush-when-idle","type":"boolean","description":"When using \u0027mode\u003dAPPEND_NO_FLUSH\u0027, set to false to indicate the \u0027flush-interval\u0027 starts from the first new write to a previously flushed (or new) file. When true, the interval starts from the last write (the file is flushed if it has no writes during the interval). Default true.","default":"true","required":false},{"name":"directory","type":"string","description":" Specifies the output directory, e.g.: directory\u003d\"file:/absolute/output\" or directory\u003d\"file:relative/output\" Either this attribute or \u0027directory-expression\u0027 must be provided.","required":false},{"name":"filename-generator","type":"string","description":" Allows you to provide a reference to the FileNameGenerator strategy to use when generating the destination file\u0027s name. If not specified the DefaultFileNameGenerator is used. ","required":false},{"name":"delete-source-files","type":"string","description":"Specify whether to delete source files after writing to the destination directory. This will take effect if the Message payload is the actual source File instance or if the original File instance (or its path) is available in the header value associated with the FileHeaders.ORIGINAL_FILE constant. The default value is false.","required":false},{"name":"directory-expression","type":"string","description":" Specifies the output directory using a SpEL expression. This allows you to dynamically specify the output directory on a per message basis. For example a message header or payload property can be used for specifying the destination directory at runtime. ","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when uploading files. We change it after we know it\u0027s uploaded. This attribute is mutually exclusive with \u0027append\u0027 since the append is done to the actual file and not its temporary counterpart. The default value of this attribute (i.e., .writing) is ignored when \u0027append\u0027 is set to true.","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"chmod","type":"string","description":"Change the mode of the file (or remote file) after writing. Integer value expressed in Octal, e.g. \u0027644\u0027.","required":false},{"name":"channel","type":"string","description":"The channel through which outgoing messages will arrive.","required":false},{"name":"buffer-size","type":"string","description":"The buffer size to use when writing to files. Default 8192 bytes.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"flush-predicate","type":"string","description":"When using \u0027mode\u003dAPPEND_NO_FLUSH\u0027, a reference to a \u0027FlushPredicate\u0027 implementation used when a message is sent to the message handler\u0027s \u0027MessageTriggerAction.trigger()\u0027 method. By default, the payload of such a message must be a Regex used to match the file absolute path.","required":false},{"name":"charset","type":"string","description":"Set the charset name to use when writing a File from a String-based Message payload, e.g. charset\u003d\"UTF-8\". If not set, the default charset of this Java virtual machine is used.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"file-to-bytes-transformer","description":"Creates a \u0027org.springframework.integration.file.transformer.FileToByteArrayTransformer\u0027 that converts a File payload to an array of bytes.","attributes":[{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition (EventDrivenConsumer)","required":false},{"name":"input-channel","type":"string","description":" The input channel of the transformer. ","required":false},{"name":"delete-files","type":"string","description":" The delete-files option signals to the transformer that it should delete the inbound File after the transformation is complete. ","required":false},{"name":"output-channel","type":"string","description":" The channel to which the transformer will send the transformed message. Optional, because incoming messages can specify a reply channel using the \u0027replyChannel\u0027 message header value themselves. ","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"tee","name":"splitter","description":"Creates a \u0027org.springframework.integration.file.splitter.FileSplitter\u0027 that splits text-based files into lines.","attributes":[{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition (EventDrivenConsumer)","required":false},{"name":"markers","type":"boolean","description":"Set to \u0027true\u0027 to emit start/end of file marker messages before and after the file data. Markers are messages with \u0027FileSplitter.FileMarker\u0027 payloads (with \u0027START\u0027 and \u0027END\u0027 values in the \u0027mark\u0027 property). Markers might be used when sequentially processing files in a downstream flow where some lines are filtered. The \u0027END\u0027 marker includes a line count. They enable the downstream processing to know when a file has been completely processed. A header \u0027file_marker\u0027 is also added, containing START/END appropriately. Default: \u0027false\u0027. When \u0027true\u0027, \u0027apply-sequence\u0027 is \u0027false\u0027 by default. Also see \u0027markers-json\u0027.","default":"false","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"discard-channel","type":"string","description":"The channel where the splitter will send the messages that return an empty container from split function.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"first-line-as-header","type":"string","description":"The header name for the first line to be carried as a header in the messages emitted for the remaining lines.","required":false},{"name":"apply-sequence","type":"boolean","description":"Set this flag to determine whether sequence related headers are added to messages from this splitter. When true, existing correlation and sequence related headers are pushed onto a stack; downstream components, such as aggregators may pop the stack to revert the existing headers after aggregation. Default is \u0027true\u0027 unless \u0027markers\u0027 is \u0027true\u0027. Also see \u0027iterator\u0027.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"charset","type":"string","description":" Set the charset name to use when reading bytes from the text-based file into String payloads, e.g. charset\u003d\"UTF-8\". If not set, the default charset of this Java virtual machine is used. ","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"markers-json","type":"boolean","description":"When \u0027markers\u0027 is true, if this is \u0027true\u0027, the message payload of the marker is a JSON String representation of the marker object. Requires a supported JSON processor library on the classpath (Jackson, Boon).","default":"false","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"requires-reply","type":"boolean","description":"Specify whether the splitter must return at least one message. This value will be \u0027false\u0027 by default, but if set to \u0027true\u0027, a ReplyRequiredException will be thrown when the file has no data.","default":"false","required":false},{"name":"iterator","type":"boolean","description":"Set this flag to determine whether the lines are emitted via an iterator (line at a time) or the whole file is read into memory and then the lines emitted. When this is \u0027true\u0027, if \u0027apply-sequence\u0027 is also \u0027true\u0027, the \u0027sequenceSize\u0027 header is set to \u00270\u0027. Default: \u0027true\u0027.","default":"true","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"source","name":"tail-inbound-channel-adapter","description":"Configures a Message Producing Endpoint for the \u0027org.springframework.integration.file.tail.FileTailingMessageProducerSupport that \u0027tails\u0027 a file on the filesystem.","attributes":[{"name":"reopen","type":"boolean","description":"Does not apply to the native adapter. If \u0027true\u0027, close and reopen the file between reading chunks. Default \u0027false\u0027. Note: Setting this option forces the use of the Apache Tailer implementation instead of the native \u0027tail\u0027 command.","required":false},{"name":"task-scheduler","type":"string","description":"A reference to a TaskScheduler; the default is the \u0027taskScheduler\u0027 bean which is automatically configured for all Spring Integration applications. The scheduler is used by the native adapter to reschedule the \u0027tail\u0027 process after a failure according to the \u0027file-delay\u0027, and also it is used to emit idle event.","required":false},{"name":"channel","type":"string","description":"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).","required":false},{"name":"end","type":"boolean","description":"Does not apply to the native adapter. Set to \u0027true\u0027 to tail from the end of the file, \u0027false\u0027 to tail from the beginning of the file. Default \u0027true\u0027. Note: Setting this option forces the use of the Apache Tailer implementation instead of the native \u0027tail\u0027 command.","required":false},{"name":"native-options","type":"string","description":"Configures the adapter to exec \u0027tail\u0027 with these options (appended by the file name). Default: \"-F -n 0\" (follow the filename and emit no existing lines). This attribute is not allowed if \u0027delay\u0027 \u0027end\u0027 or \u0027reopen\u0027 is specified, which cause the Apache commons-io \u0027Tailer\u0027 class to be used instead of using a native \u0027tail\u0027 command.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"file-delay","type":"string","description":"The delay in milliseconds between attempts to open the file when no file was found (Apache adapter). For the native adapter, this is used as a delay before starting a new process after process failures. On some platforms, when the file doesn\u0027t exist, the \u0027tail\u0027 process is suspended until the file appears; on other platforms, the \u0027tail\u0027 process exits immediately if the file doesn\u0027t exist. Default 5000.","required":false},{"name":"id","type":"string","required":false},{"name":"idle-event-interval","type":"string","description":"The delay in milliseconds between idle events when no new lines are being tailed.","required":false},{"name":"task-executor","type":"string","description":"A reference to a TaskExecutor; the default is a SimpleAsyncTaskExecutor; the native adapter uses three threads - one for reading stdout, one for reading stderr and one for monitoring the process.","required":false},{"name":"file","type":"string","description":"The fully qualified name of the file to be tailed.","required":false},{"name":"error-channel","type":"string","description":"Message Channel to which error Messages should be sent.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"delay","type":"string","description":"Does not apply to the native adapter - the delay in milliseconds between polls when no new data was detected in the file. Default 1000. Note: Setting this option forces the use of the Apache Tailer implementation instead of the native \u0027tail\u0027 command.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"enable-status-reader","type":"boolean","description":"Configure the adapter to either start a thread for capturing stderr or not. Default: True","default":"true","required":false}]},{"role":"endpoint","connectionType":"source","name":"inbound-channel-adapter","description":"Configures a \u0027SourcePollingChannelAdapter\u0027 Endpoint for the \u0027org.springframework.integration.file.FileReadingMessageSource\u0027 that polls a directory and sends Messages whose payloads are instances of java.io.File.","attributes":[{"name":"channel","type":"string","description":"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).","required":false},{"name":"scan-each-poll","type":"boolean","description":"Set this flag if you want to make sure the internal queue is refreshed with the latest content of the input directory on each poll.","default":"false","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"filename-pattern","type":"string","description":"Only files matching this ant style path will be picked up by this adapter. Note that in Spring Integration 1.0 this attribute accepted a regular expression, but from 2.0 filename-regex should be used for that purpose instead.","required":false},{"name":"comparator","type":"string","description":"Specify a Comparator to be used when ordering Files. If none is provided, the order will be determined by the java.io.File implementation of Comparable. MUTUALLY EXCLUSIVE with queue-size.","required":false},{"name":"prevent-duplicates","type":"string","description":"A boolean flag indicating whether duplicates should be prevented. If a \u0027filter\u0027 reference is provided, duplicate prevention will not be enabled by default (the assumption is that the provided filter is sufficient), but setting this to true will enable it. If a \u0027filename-pattern\u0027 is provided, duplicate prevention will be enabled by default (preceding the pattern matching), but setting this to false will disable it. If neither \u0027filter\u0027 or \u0027filename-pattern\u0027 is provided, duplicate prevention is enabled by default, but setting this to false will disable it. For more detail on the actual duplicate prevention, see the javadoc for AcceptOnceFileListFilter.","required":false},{"name":"id","type":"string","required":false},{"name":"use-watch-service","type":"boolean","description":"Indicates if the \u0027FileReadingMessageSource\u0027 should use an internal \u0027DirectoryScanner\u0027 for the Java 7 \u0027WatchService\u0027. Mutually exclusive with \u0027scanner\u0027 attribute.","required":false},{"name":"ignore-hidden","type":"boolean","description":"A boolean flag indicating whether hidden files shall be ignored. If set to \u0027false\u0027, hidden files will be processed. If not specified, this value will default to \u0027true\u0027 and an \u0027IgnoreHiddenFileListFilter\u0027 will be added.","required":false},{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the source directory if it does not yet exist when this adapter is being initialized. The default value is \u0027true\u0027. If set to \u0027false\u0027 and the directory does not exist upon initialization, an Exception will be thrown.","default":"true","required":false},{"name":"filename-regex","type":"string","description":"Only files matching this regular expression will be picked up by this adapter.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"filter","type":"string","description":"Specify a FileListFilter to be used. By default, an AcceptOnceFileListFilter is used, which ensures files are picked up only once from the directory. You can also apply multiple filters by referencing a CompositeFileListFilter.","required":false},{"name":"watch-events","type":"string","description":"Comma-separated value for the \u0027FileReadingMessageSource.WatchEventType\u0027s to specify which kinds of files system events the \u0027WatchService\u0027 will listen to. Used only if \u0027use-watch-service \u003d\u003d true\u0027.","default":"CREATE","required":false,"restriction":{"type":"enum","values":["CREATE","MODIFY","DELETE"]}},{"name":"scanner","type":"string","description":"Reference to a custom DirectoryScanner implementation. Mutually exclusive with \u0027use-watch-service\u0027 attribute.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"directory","type":"string","description":"Specifies the input directory (The directory to poll from) e.g.: directory\u003d\"file:/absolute/input\" or directory\u003d\"file:relative/input\"","required":true},{"name":"queue-size","type":"number","description":"Specify the maximum number of files stored in memory by the underlying FileReadingMessageSource. This is useful to limit the memory footprint of this endpoint. Using a stateful filter would counter this benefit, so AcceptOnceFileListFilter is not used when this attribute is specified. MUTUALLY EXCLUSIVE with comparator, if comparator is set this attribute will be ignored. MUTUALLY EXCLUSIVE with stateful filtering.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"locker","description":" When multiple processes are reading from the same directory it can be desirable to lock files to prevent them from being picked up concurrently. To do this you can specify a reference to a FileLocker. ","attributes":[{"name":"ref","type":"string","description":" The reference to the FileLocker. ","required":false}]},{"occurrence":{"min":0},"name":"nio-locker","description":" When multiple processes are reading from the same directory it can be desirable to lock files to prevent them from being picked up concurrently. This is a java.nio based implementation available out of the box. "}]}},{"role":"endpoint","connectionType":"request_reply","name":"outbound-gateway","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.file.FileWritingMessageHandler\u0027 that writes request Message payloads to a File and then generates a reply Message containing the newly written File as its payload.","attributes":[{"name":"filename-generator-expression","type":"string","description":"Allows you to provide a SpEL expression which will compute the file name of the target file (e.g., assuming payload is java.io.File \"payload.name + \u0027.transferred\u0027\");","required":false},{"name":"append-new-line","type":"string","description":"Set to \u0027true\u0027 to append a new-line after each write. It is \u0027false\u0027 by default.","default":"false","required":false},{"name":"requires-reply","type":"string","description":"Specify whether this outbound gateway must return a non-null value. This value is \u0027true\u0027 by default, and a ReplyRequiredException will be thrown when the underlying service returns a null value.","default":"true","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition (EventDrivenConsumer)","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"flush-when-idle","type":"boolean","description":"When using \u0027mode\u003dAPPEND_NO_FLUSH\u0027, set to false to indicate the \u0027flush-interval\u0027 starts from the first new write to a previously flushed (or new) file. When true, the interval starts from the last write (the file is flushed if it has no writes during the interval). Default true.","default":"true","required":false},{"name":"directory","type":"string","description":" Specifies the output directory, e.g.: directory\u003d\"file:/absolute/output\" or directory\u003d\"file:relative/output\" Either this attribute or \u0027directory-expression\u0027 must be provided.","required":false},{"name":"filename-generator","type":"string","description":" Allows you to provide a reference to the FileNameGenerator strategy to use when generating the destination file\u0027s name. If not specified the DefaultFileNameGenerator is used. ","required":false},{"name":"delete-source-files","type":"string","description":"Specify whether to delete source files after writing to the destination directory. This will take effect if the Message payload is the actual source File instance or if the original File instance (or its path) is available in the header value associated with the FileHeaders.ORIGINAL_FILE constant. The default value is false.","required":false},{"name":"reply-channel","type":"string","description":" After writing the File, it will be sent to the specified reply channel as the payload of a Message. Another way of providing the \u0027reply-channel\u0027 is by setting the MessageHeaders.REPLY_CHANNEL Message Header ","required":false},{"name":"request-channel","type":"string","description":"The channel through which outgoing messages will arrive.","required":false},{"name":"buffer-size","type":"string","description":"The buffer size to use when writing to files. Default 8192 bytes.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"flush-predicate","type":"string","description":"When using \u0027mode\u003dAPPEND_NO_FLUSH\u0027, a reference to a \u0027FlushPredicate\u0027 implementation used when a message is sent to the message handler\u0027s \u0027MessageTriggerAction.trigger()\u0027 method. By default, the payload of such a message must be a Regex used to match the file absolute path.","required":false},{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the destination directory if it does not yet exist when this adapter is being initialized. The default value is \u0027true\u0027. If set to \u0027false\u0027 and the directory does not exist upon initialization, an Exception will be thrown.","default":"true","required":false},{"name":"preserve-timestamp","type":"string","description":"Specify whether to preserve the modified timestamp from the source file on the destination file after copying. Applies to \u0027java.io.File\u0027 payloads. For other payload types, the optional \u0027file_setModified\u0027 header will be used, if present (and a \u0027Number\u0027), to set the lastModified time. By default, the timestamp will NOT be preserved.","default":"false","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds.","required":false},{"name":"mode","type":"string","description":"This attribute defaults to \u0027REPLACE\u0027 if not set explicitly. The following options are available: APPEND: If append is specified, the data will be appended to the existing file if such file exists, otherwise the new file will be created as usual but, once created, the subsequent data will be appended to it. This attribute is mutually exclusive with the use of a temporary file, since append is done to the actual file and not its temporary counterpart. The file is closed after each write. If set to APPEND, the component will also use instance of the LockRegistry to ensure that there are no collisions when multiple threads are writing to the same file. APPEND_NO_FLUSH: Same as \u0027APPEND\u0027 but the data is not flushed or the file closed. This can significantly improve performance at the risk of lost data in the event of a failure. Various strategies are available for flushing the data and closing the file. Refer to the reference documentation for more information. FAIL: If the target file exists, a MessageHandlingException is thrown. IGNORE: If the target file exists, the message payload is silently ignored. REPLACE: This is the default behavior when writing files. If the target file already exists, it will be overwritten. REPLACE_IF_MODIFIED: If the local file already exists, it will be overwritten only if the last modified timestamp does not match the source timestamp. Only applies to local files.","required":false,"restriction":{"type":"enum","values":["REPLACE","REPLACE_IF_MODIFIED","APPEND","APPEND_NO_FLUSH","FAIL","IGNORE"]}},{"name":"flush-interval","type":"string","description":"When using \u0027mode\u003dAPPEND_NO_FLUSH\u0027, if this time (ms) elapses without any new writes, the data is flushed and the file closed. Default 30000.","required":false},{"name":"directory-expression","type":"string","description":" Specifies the output directory using a SpEL expression. This allows you to dynamically specify the output directory on a per message basis. For example a message header or payload property can be used for specifying the destination directory at runtime. ","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when uploading files. We change it after we know it\u0027s uploaded. This attribute is mutually exclusive with \u0027append\u0027 since the append is done to the actual file and not its temporary counterpart. The default value of this attribute (i.e., .writing) is ignored when \u0027append\u0027 is set to true.","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"chmod","type":"string","description":"Change the mode of the file (or remote file) after writing. Integer value expressed in Octal, e.g. \u0027644\u0027.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"charset","type":"string","description":"Set the charset name to use when writing a File from a String-based Message payload, e.g. charset\u003d\"UTF-8\". If not set, the default charset of this Java virtual machine is used.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}}],"ftp":[{"role":"endpoint","connectionType":"source","name":"inbound-channel-adapter","description":"Configures a \u0027SourcePollingChannelAdapter\u0027 Endpoint for the \u0027org.springframework.integration.ftp.inbound.FtpInboundFileSynchronizingMessageSource\u0027 that synchronizes a local directory with the contents of a remote FTP endpoint.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"preserve-timestamp","type":"string","description":"Specify whether to preserve the modified timestamp from the remote source file on the local file after copying. By default, the remote timestamp will NOT be preserved.","default":"false","required":false},{"name":"channel","type":"string","description":"Identifies channel attached to this adapter. The channel to which messages will be sent by this adapter.","required":false},{"name":"id","type":"string","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when downloading files. We change it right after we know it\u0027s downloaded.","required":false},{"name":"local-filter","type":"string","description":"Allows you to specify a reference to a [org.springframework.integration.file.filters.FileListFilter] bean. This filter is applied to files after they have been retrieved. The default is an AcceptOnceFileListFilter which means that, even if a new instance of a file is retrieved from the remote server, a message won\u0027t be generated. The filter provided here is combined with a filter that prevents the message source from processing files that are currently being downloaded.","required":false},{"name":"metadata-store-prefix","type":"string","description":"Specify a prefix for metadata store to distinguish keys from another places where the same shared store is used. By default, the remote a component name is used.","required":false},{"name":"max-fetch-size","type":"string","description":"When fetching objects from some external resource, limit the number of such objects that will be retrieved on each fetch. A negative value (default) indicates no limit; a value of zero effectively disables fetching remote objects.","required":false},{"name":"local-directory","type":"string","description":"Identifies the directory path (e.g., \"/local/mytransfers\") where files will be transferred TO.","required":true},{"name":"comparator","type":"string","description":"Specify a Comparator to be used when ordering Files. If none is provided, the order will be determined by the java.io.File implementation of Comparable.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"scanner","type":"string","description":"Reference to a custom DirectoryScanner implementation.","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false},{"name":"local-filename-generator-expression","type":"string","description":"Allows you to provide a SpEL expression to generate the file name of the local (transferred) file. The root object of the SpEL evaluation is the name of the original file. For example, a valid expression would be \"#this.toUpperCase() + \u0027.a\u0027\" where #this represents the original name of the remote file.","required":false},{"name":"auto-create-local-directory","type":"string","description":"Tells this adapter if the local directory must be auto-created if it doesn\u0027t exist. Default is TRUE.","required":false},{"name":"delete-remote-files","type":"string","description":"Specify whether to delete the remote source file after copying. By default, the remote files will NOT be deleted.","default":"false","required":false},{"name":"filename-pattern","type":"string","description":"Allows you to provide a file name pattern to determine the file names that need to be scanned. This is based on simple pattern matching (e.g., \"*.txt, fo*.txt\" etc.)","required":false},{"name":"remote-file-metadata-store","type":"string","description":"Reference to a MetadataStore for saving remote files information between synchronization and polling.","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with an [org.apache.commons.net.ftp.FTPFile] generic type parameter.","required":true},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"filter","type":"string","description":"Allows you to specify a reference to a [org.springframework.integration.file.filters.FileListFilter] bean. This filter is applied to files on the remote server and only files that pass the filter are retrieved.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"filename-regex","type":"string","description":"Allows you to provide a Regular Expression to determine the file names that need to be scanned. (e.g., \"f[o]+\\.txt\" etc.)","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"request_reply","name":"outbound-gateway","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.ftp.gateway.FtpOutboundGateway\u0027 used to issue FTP commands.","attributes":[{"name":"requires-reply","type":"string","description":"Specify whether this outbound gateway must return a non-null value. This value is \u0027true\u0027 by default, and a ReplyRequiredException will be thrown when the underlying service returns a null value.","default":"true","required":false},{"name":"mput-regex","type":"string","description":"Allows you to provide Regular Expression to determine the file names sent by the \u0027mput\u0027 command (e.g., \"f[o]+\\.txt\" etc.) Only one of \u0027mput-filter\u0027, \u0027mput-pattern\u0027, or \u0027mput-regex\u0027 is allowed.","required":false},{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the remote target directory if it doesn\u0027t exist.","default":"false","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"mput-filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027mput-filter\u0027 attribute.","required":false},{"name":"id","type":"string","required":false},{"name":"mput-filter","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.filters.FileListFilter] bean. This filter acts on the local file system when using the \u0027mput\u0027 command. Only one of \u0027mput-filter\u0027, \u0027mput-pattern\u0027, or \u0027mput-regex\u0027 is allowed.","required":false},{"name":"command","type":"string","description":"FTP command.","required":false,"restriction":{"type":"enum","values":["ls","nlst","get","rm","mget","mv","put","mput"]}},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when downloading files. We change it right after we know it\u0027s downloaded.","required":false},{"name":"filename-pattern","type":"string","description":"Allows you to provide file name pattern to determine the file names retrieved by the \u0027ls\u0027 and \u0027mget\u0027 commands and is based on simple pattern matching algorithm (e.g., \"*.txt, fo*.txt\" etc.) Only one of \u0027filter\u0027, \u0027filename-pattern\u0027, or \u0027filename-regex\u0027 is allowed.","required":false},{"name":"expression","type":"string","description":"SpEL expression representing the path in the command (e.g. ls path to list the files in directory path).","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"temporary-remote-directory","type":"string","description":"Identifies the remote temporary directory path (e.g., \"/remote/temp/mytransfers\")","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false},{"name":"local-filename-generator-expression","type":"string","description":"Allows you to provide a SpEL expression to generate the file name of the local (transferred) file. The root object of the SpEL evaluation is the request Message, but the name of the original remote file is also provided as the \u0027remoteFileName\u0027 variable. For example, a valid expression would be: \"#remoteFileName.toUpperCase() + headers.foo\". Only used with \u0027get\u0027 and \u0027mget\u0027 commands.","required":false},{"name":"auto-create-local-directory","type":"boolean","description":"Tells this adapter if local directory must be auto-created if it doesn\u0027\u0027t exist. Default is TRUE.","required":false},{"name":"request-channel","type":"string","description":"Identifies the request channel attached to this gateway.","required":false},{"name":"mput-pattern","type":"string","description":"Allows you to provide file name pattern to determine the file names sent by the \u0027mput\u0027 command and is based on simple pattern matching algorithm (e.g., \"*.txt, fo*.txt\" etc.) Only one of \u0027mput-filter\u0027, \u0027mput-pattern\u0027, or \u0027mput-regex\u0027 is allowed.","required":false},{"name":"command-options","type":"string","description":"FTP command options; for ls, -1 means just return the file names (otherwise file metadata is returned, -dirs means include directories (not included by default), -links means include links (not included by default); for get, -P means preserve timestamp from remote file.","required":false},{"name":"remote-filename-generator","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.FileNameGenerator] bean.","required":false},{"name":"session-callback","type":"string","description":"The \u0027MessageSessionCallback\u0027 bean reference to perform custom operation(s) on \u0027Session\u0027 with \u0027requestMessage\u0027.","required":false},{"name":"local-directory-expression","type":"string","description":"Specifies SpEL expression to generate the directory path where file will be transferred TO, when using \u0027get\u0027 and \u0027mget\u0027 commands. The root object of the SpEL evaluation is the request Message, but the name of the source remote directory is also provided as the \u0027remoteDirectory\u0027 variable. For example, a valid expression might be: \"\u0027/local/\u0027 + #remoteDirectory.toUpperCase() + headers.foo\". Only used with \u0027get\u0027 and \u0027mget\u0027 commands. This attribute is mutually exclusive with \u0027local-directory\u0027.","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds.","required":false},{"name":"mode","type":"string","description":"This attribute defaults to \u0027REPLACE\u0027 if not set explicitly. The following options are available: APPEND: If append is specified, the data will be appended to the existing file if such file exists, otherwise the new file will be created as usual but, once created, the subsequent data will be appended to it. This attribute is mutually exclusive with the use of a temporary file, since append is done to the actual file and not its temporary counterpart. The file is closed after each write. If set to APPEND, the component will also use instance of the LockRegistry to ensure that there are no collisions when multiple threads are writing to the same file. APPEND_NO_FLUSH: Same as \u0027APPEND\u0027 but the data is not flushed or the file closed. This can significantly improve performance at the risk of lost data in the event of a failure. Various strategies are available for flushing the data and closing the file. Refer to the reference documentation for more information. FAIL: If the target file exists, a MessageHandlingException is thrown. IGNORE: If the target file exists, the message payload is silently ignored. REPLACE: This is the default behavior when writing files. If the target file already exists, it will be overwritten. REPLACE_IF_MODIFIED: If the local file already exists, it will be overwritten only if the last modified timestamp does not match the source timestamp. Only applies to local files.","required":false,"restriction":{"type":"enum","values":["REPLACE","REPLACE_IF_MODIFIED","APPEND","APPEND_NO_FLUSH","FAIL","IGNORE"]}},{"name":"filter","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.filters.FileListFilter] bean. This filter acts against the remote server view when using the \u0027ls\u0027 or \u0027mget\u0027 commands. Only one of \u0027filter\u0027, \u0027filename-pattern\u0027, or \u0027filename-regex\u0027 is allowed.","required":false},{"name":"reply-channel","type":"string","description":"Identifies the reply channel attached to this gateway.","required":false},{"name":"temporary-remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the temporary directory path to where files will be transferred before they are moved to the remote-directory (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/temp/myTransfers\u0027\");","required":false},{"name":"working-dir-expression","type":"string","description":"The SpEL expression to evaluate FTP client working directory against request message.","required":false},{"name":"filename-regex","type":"string","description":"Allows you to provide Regular Expression to determine the file names retrieved by the \u0027ls\u0027 and \u0027mget\u0027 commands. (e.g., \"f[o]+\\.txt\" etc.) Only one of \u0027filter\u0027, \u0027filename-pattern\u0027, or \u0027filename-regex\u0027 is allowed.","required":false},{"name":"local-directory","type":"string","description":"Identifies directory path (e.g., \"/local/mytransfers\") where file will be transferred TO. This attribute is mutually exclusive with \u0027local-directory-expression\u0027.","required":false},{"name":"remote-filename-generator-expression","type":"string","description":"Allows you to provide SpEL expression which will compute file name of the remote file (e.g., assuming payload is java.io.File \"payload.getName() + \u0027.transferred\u0027\");","required":false},{"name":"chmod","type":"string","description":"Change the mode of the file (or remote file) after writing. Integer value expressed in Octal, e.g. \u0027644\u0027.","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with an [org.apache.commons.net.ftp.FTPFile] generic type parameter.","required":true},{"name":"rename-expression","type":"string","description":"SpEL expression representing the path for the new filename when using the \u0027mv\u0027 command. Defaults to \"headers.[\u0027file_renameTo\u0027]\".","required":false},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"use-temporary-file-name","type":"string","description":"Allows you to suppress using a temporary file name while writing the file.","default":"true","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"order","type":"string","description":"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, or when a failure in the delivery to one subscriber should signal that the message should not be sent to subscribers with a higher \u0027order\u0027 attribute. It has no effect when this endpoint itself is a Polling Consumer for a channel with a queue.","required":false},{"name":"charset","type":"string","description":"Allows you to specify Charset (e.g., US-ASCII, ISO-8859-1, UTF-8). [UTF-8] is default - used when converting String payloads to bytes.","default":"UTF-8","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.file.remote.handler.FileTransferringMessageHandler\u0027 for the \u0027FtpRemoteFileTemplate\u0027 that writes files to a remote FTP endpoint.","attributes":[{"name":"remote-filename-generator","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.FileNameGenerator] bean.","required":false},{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the remote target directory if it doesn\u0027t exist.","default":"false","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"mode","type":"string","description":"This attribute defaults to \u0027REPLACE\u0027 if not set explicitly. The following options are available: APPEND: If append is specified, the data will be appended to the existing file if such file exists, otherwise the new file will be created as usual but, once created, the subsequent data will be appended to it. This attribute is mutually exclusive with the use of a temporary file, since append is done to the actual file and not its temporary counterpart. The file is closed after each write. If set to APPEND, the component will also use instance of the LockRegistry to ensure that there are no collisions when multiple threads are writing to the same file. APPEND_NO_FLUSH: Same as \u0027APPEND\u0027 but the data is not flushed or the file closed. This can significantly improve performance at the risk of lost data in the event of a failure. Various strategies are available for flushing the data and closing the file. Refer to the reference documentation for more information. FAIL: If the target file exists, a MessageHandlingException is thrown. IGNORE: If the target file exists, the message payload is silently ignored. REPLACE: This is the default behavior when writing files. If the target file already exists, it will be overwritten. REPLACE_IF_MODIFIED: If the local file already exists, it will be overwritten only if the last modified timestamp does not match the source timestamp. Only applies to local files.","required":false,"restriction":{"type":"enum","values":["REPLACE","REPLACE_IF_MODIFIED","APPEND","APPEND_NO_FLUSH","FAIL","IGNORE"]}},{"name":"id","type":"string","required":false},{"name":"temporary-remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the temporary directory path to where files will be transferred before they are moved to the remote-directory (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/temp/myTransfers\u0027\");","required":false},{"name":"remote-filename-generator-expression","type":"string","description":"Allows you to provide SpEL expression which will compute file name of the remote file (e.g., assuming payload is java.io.File \"payload.getName() + \u0027.transferred\u0027\");","required":false},{"name":"chmod","type":"string","description":"Change the mode of the file (or remote file) after writing. Integer value expressed in Octal, e.g. \u0027644\u0027.","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when downloading files. We change it right after we know it\u0027s downloaded.","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with an [org.apache.commons.net.ftp.FTPFile] generic type parameter.","required":true},{"name":"use-temporary-file-name","type":"string","description":"Allows you to suppress using a temporary file name while writing the file.","default":"true","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"channel","type":"string","description":"Identifies channel attached to this adapter. This channel could be the receiving channel.","required":false},{"name":"order","type":"string","description":"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, or when a failure in the delivery to one subscriber should signal that the message should not be sent to subscribers with a higher \u0027order\u0027 attribute. It has no effect when this endpoint itself is a Polling Consumer for a channel with a queue.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"charset","type":"string","description":"Allows you to specify Charset (e.g., US-ASCII, ISO-8859-1, UTF-8). [UTF-8] is default - used when converting String payloads to bytes.","default":"UTF-8","required":false},{"name":"temporary-remote-directory","type":"string","description":"Identifies the remote temporary directory path (e.g., \"/remote/temp/mytransfers\")","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"source","name":"inbound-streaming-channel-adapter","description":"Configures a \u0027SourcePollingChannelAdapter\u0027 Endpoint for the \u0027org.springframework.integration.ftp.inbound.FtpInboundStreamingMessageSource\u0027.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"channel","type":"string","description":"Identifies channel attached to this adapter. The channel to which messages will be sent by this adapter.","required":false},{"name":"comparator","type":"string","description":"Specify a Comparator to be used when ordering Files. If none is provided, the order in which files are processed is the order they are received from the FTP server. The generic type of the Comparator must be \u0027FtpFileInfo\u0027.","required":false},{"name":"id","type":"string","required":false},{"name":"filename-pattern","type":"string","description":"Allows you to provide a file name pattern to determine the file names that need to be scanned. This is based on simple pattern matching (e.g., \"*.txt, fo*.txt\" etc.)","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with an [org.apache.commons.net.ftp.FTPFile] generic type parameter.","required":true},{"name":"filter","type":"string","description":"Allows you to specify a reference to a [org.springframework.integration.file.filters.FileListFilter] bean. This filter is applied to files on the remote server and only files that pass the filter are retrieved.","required":false},{"name":"max-fetch-size","type":"string","description":"When fetching objects from some external resource, limit the number of such objects that will be retrieved on each fetch. A negative value (default) indicates no limit; a value of zero effectively disables fetching remote objects.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"filename-regex","type":"string","description":"Allows you to provide a Regular Expression to determine the file names that need to be scanned. (e.g., \"f[o]+\\.txt\" etc.)","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}}],"groovy":[{"role":"endpoint","connectionType":"passthru","name":"control-bus","description":"Control bus (\u0027org.springframework.integration.groovy.config.GroovyControlBusFactoryBean\u0027) that accepts messages in the form of Groovy scripts. The scripts should be provided as String payload in incoming messages. The variable bindings will include any @ManagedResource, Lifecycle, or CustomizableThreadCreator instances from within the ApplicationContext.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"customizer","type":"string","description":"Reference to a GroovyObjectCustomizer bean to be applied to each script payload.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"script","description":"Configures an inner bean (\u0027org.springframework.integration.groovy.GroovyScriptExecutingMessageProcessor\u0027) that will generate a Groovy Script.","attributes":[{"name":"compile-static","type":"boolean","description":"Indicates if the target Groovy script should be compiled statically. The @CompileStatic hint is applied for the Groovy compiler. This attribute is ignored if the \u0027compiler-configuration\u0027 reference is specified.","default":"false","required":false},{"name":"customizer","type":"string","description":"Reference to a GroovyObjectCustomizer bean to be applied to this script.","required":false},{"name":"refresh-check-delay","type":"string","description":"Refresh delay for the script contents if specified as a resource location (defaults to -1, never refresh).","required":false},{"name":"variables","type":"string","description":"Comma-delimited pairs of variables and their values. the variable name can applies \u0027-ref\u0027 suffix, which mean to determine a variable value as a bean reference. This attribute isn\u0027t mutually exclusive with \u0027variable\u0027 sub-elements and all variables will be merged to one Map. This attribute is mutually exclusive with \u0027script-variable-generator\u0027 attribute.","required":false},{"name":"location","type":"string","description":"Resource location path for the Script. Either this or an inline script as body text should be provided, but not both.","required":false},{"name":"script-variable-generator","type":"string","description":"Reference to the ScriptVariableGenerator bean. This attribute is mutually exclusive with any \u0027variable\u0027 sub-elements and \u0027variables\u0027 attribute.","required":false},{"name":"compiler-configuration","type":"string","description":"Reference to a CompilerConfiguration bean to be applied to the underlying GroovyClassLoader for this script compilation.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"variable","description":"Allows you to define custom script variable bindings. The use of this sub-element is mutually exclusive with the \u0027script-variable-generator\u0027 attribute.","attributes":[{"name":"value","type":"string","description":"Value of the script variable as a literal.","required":false},{"name":"ref","type":"string","description":"Value of the script variable as a bean reference.","required":false},{"name":"name","type":"string","description":"Name of the script variable.","required":false}]}]}}],"http":[{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler\u0027 with \u0027expectReply \u003d false\u0027 that sends HTTP requests based on incoming messages.","attributes":[{"name":"header-mapper","type":"string","description":"Specify a reference to org.springframework.integration.mapping.HeaderMapper implementation bean. Only one of \u0027header-mapper\u0027 or \u0027mapped-request-headers\u0027 attributes can be provided.","required":false},{"name":"channel","type":"string","description":"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).","required":false},{"name":"encode-uri","type":"string","description":"When set to \"false\", the real URI won\u0027t be encoded before the request is sent. This may be useful in some scenarios as it allows user control over the encoding, if needed, for example by using the \"url-expression\". Default is \"true\".","default":"true","required":false},{"name":"extract-payload","type":"string","description":"Specify whether the outbound message\u0027s payload should be extracted when preparing the request body. Otherwise the Message instance itself will be serialized. The default value is \u0027true\u0027.","default":"true","required":false},{"name":"uri-variables-expression","type":"string","description":"Specifies the SpEL expression to be evaluate as a Map for URI variable placeholders within \u0027url\u0027. This attribute is mutually exclusive with \u0027uri-variable\u0027 sub-elements.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"message-converters","type":"string","description":"Provide a reference to a list of HttpMessageConverter instances. If specified, these converters will replace all of the default converters that would normally be present on the underlying RestTemplate.","required":false},{"name":"http-method","type":"string","description":"The HTTP method to use when executing requests with this adapter Default is POST. This attribute cannot be provided if http-method-expression has a value.","required":false,"restriction":{"type":"enum","values":["GET","POST","HEAD","OPTIONS","PUT","DELETE","TRACE"]}},{"name":"rest-template","type":"string","description":"The reference to org.springframework.web.client.RestTemplate bean to send the HTTP Request.","required":false},{"name":"expected-response-type","type":"string","description":"The expected type to which the response body should be converted. Default is \u0027org.springframework.http.ResponseEntity\u0027. This attribute cannot be provided if expected-response-type-expression has a value","required":false},{"name":"id","type":"string","required":false},{"name":"mapped-request-headers","type":"string","description":"Comma-separated list of names of MessageHeaders to be mapped into the HttpHeaders of the HTTP request. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\"). The String \"HTTP_REQUEST_HEADERS\" will match against any of the standard HTTP Request headers.","required":false},{"name":"error-handler","type":"string","description":"Reference to a ResponseErrorHandler to be used by the underlying RestTemplate.","required":false},{"name":"trusted-spel","type":"boolean","description":"Set to \u0027true\u0027 if you trust SpEL expressions that might be evaluated to generate URI variables. The default value is \u0027false\u0027.","required":false},{"name":"url","type":"string","description":" URL to which the requests should be sent. It may include {placeholders} for evaluation against uri-variables.","required":false},{"name":"request-factory","type":"string","description":"Reference to a ClientHttpRequestFactory to be used by the underlying RestTemplate.","required":false},{"name":"http-method-expression","type":"string","description":"The SpEL expression to determine HTTP method, use when executing requests with this adapter, dynamically. This attribute cannot be provided if http-method has a value.","required":false},{"name":"charset","type":"string","description":"Specify the charset name to use for converting String-typed payloads to bytes. The default is \u0027UTF-8\u0027","required":false},{"name":"expected-response-type-expression","type":"string","description":"SpEL expression to determine the type for the expected response to which the response body should be converted The returned value of the expression could be an instance of java.lang.Class or java.lang.String representing a fully qualified class name. This attribute cannot be provided if expected-response-type has a value","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this adapter is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"url-expression","type":"string","description":" SpEL Expression resolving to a URL to which the requests should be sent. The resolved value may include {placeholders} for further evaluation against uri-variables.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0,"max":-1},"name":"uri-variable","description":"Specify an expression for URI variable placeholder within \u0027url\u0027. This element is mutually exclusive with \u0027uri-variables-expression\u0027 attribute.","attributes":[{"name":"expression","type":"string","description":"Expression to be evaluated to determine the replacement value. The Message is the root object of the expression, therefore the \u0027payload\u0027 and \u0027headers\u0027 are available directly. Any bean may be resolved if the bean name is preceded with \u0027@\u0027.","required":true},{"name":"name","type":"string","description":"Name of the placeholder to be replaced.","required":true}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}},{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"inbound_request_reply","name":"inbound-gateway","description":"Configures a Messaging Gateway Endpoint for the \u0027org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport\u0027 that receives HTTP requests and produces responses.","attributes":[{"name":"reply-timeout-status-code-expression","type":"string","description":"A SpEL expression that resolves to an \u0027HttpStatus\u0027 code when rendering a response after a \u0027reply-timeout\u0027. The expression must return an object which can be converted to a \u0027org.springframework.http.HttpStatus\u0027 enum value. The \u0027evaluationContext\u0027 has a \u0027BeanResolver\u0027 but no variables, so the usage of this attribute is somewhat limited. An example might be to resolve, at runtime, some scoped Bean that returns an \u0027HttpStatus\u0027 value, or use a literal expression e.g. \"504\". By default \u0027status-code-expression\u0027 is null, meaning that the default \u0027500 Internal Server Error\u0027 response status will be returned after a timeout. When a timeout is not encountered, the \u0027http:inbound-gateway\u0027 resolves the \u0027status code\u0027 from the \u0027http_statusCode\u0027 header of the reply Message.","required":false},{"name":"header-mapper","type":"string","description":"Specifies a reference to org.springframework.integration.mapping.HeaderMapper implementation bean. Only one of \u0027header-mapper\u0027 or \u0027mapped-request-headers\u0027 attributes can be provided.","required":false},{"name":"mapped-response-headers","type":"string","description":"Comma-separated list of names of MessageHeaders to be mapped into the HttpHeaders of the HTTP response. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\"). The String \"HTTP_RESPONSE_HEADERS\" will match against any of the standard HTTP Response headers.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"view-expression","type":"string","description":"SpEL expression that resolves to a view to be resolved when rendering a response. The expression can resolve to a view name or View object. In the case of \u0027inbound-gateway\u0027 the root object of the evaluation context is the reply message. In the case of \u0027inbound-channel-adapter\u0027 the \u0027evaluationContext\u0027 for this expression is rather lightweight, because there is no reply message, it has a \u0027BeanResolver\u0027 but no variables, so the usage of this attribute is somewhat limited. An example might be to resolve, at runtime, some scoped Bean that returns a view name or View object. This attribute is not allowed if there is a \u0027view-name\u0027 attribute.","required":false},{"name":"validator","type":"string","description":"A \u0027Validator\u0027 bean reference to validate a payload converted from the HTTP request.","required":false},{"name":"request-timeout","type":"string","description":"Used to set the sendTimeout on the underlying MessagingTemplate instance (org.springframework.integration.core.MessagingTemplate) for sending messages to the request channel. If not specified this property will default to \"1000\" (1 second).","required":false},{"name":"id","type":"string","required":false},{"name":"errors-key","type":"string","description":"In the case that a view-name is specified this attribute can be used to override the default key of the Errors (if the request cannot be handled). Defaults to \"errors\" (similar to normal MVC usage).","required":false},{"name":"extract-reply-payload","type":"string","description":"Specify whether only the reply Message\u0027s payload should be passed in the response. If this is set to \u0027false\u0027, the entire Message will be used to generate the response. The default is \u0027true\u0027.","default":"true","required":false},{"name":"request-payload-type","type":"string","description":"Target type for payload that is the conversion result of the request.","required":false},{"name":"reply-timeout","type":"string","description":"Used to set the receiveTimeout on the underlying MessagingTemplate instance (org.springframework.integration.core.MessagingTemplate) for receiving messages from the reply channel. If not specified this property will default to \"1000\" (1 second).","required":false},{"name":"reply-channel","type":"string","description":"Identifies the channel to which this gateway will subscribe, to receive(send) reply Messages.","required":false},{"name":"supported-methods","type":"string","description":"Comma-separated HTTP Method names. Determines which types of Request are allowed with this Endpoint.","required":false,"restriction":{"type":"enum","values":["GET","POST","HEAD","OPTIONS","PUT","DELETE","TRACE"]}},{"name":"error-code","type":"string","description":"In the case that a view-name is specified this attribute can be used to override the default error code under which the handling exception is exposed. Defaults to \"spring.integration.http.handler.error\" and is supplied with 3 parameters: the exception itself, its message and its stack trace as a String.","required":false},{"name":"convert-exceptions","type":"string","description":"In the case that a view-name is not specified this attribute can be used to override the default behaviour when there is a message handling exception (which is to rethrow). If this flag is true then the normal conversion process will be applied to the exception and written out to the response body.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"error-channel","type":"string","description":"The MessagingGateway\u0027s \u0027error-channel\u0027 where to send an ErrorMessage in case of Exception is caused from original message flow.","required":false},{"name":"message-converters","type":"string","description":"List of HttpMessageConverters for this Channel Adapter.","required":false},{"name":"path","type":"string","description":"Comma-separated URI paths (e.g., /orderId/{order}). Ant-style path patterns are also supported (e.g. /myPath/*.do).","required":false},{"name":"reply-key","type":"string","description":"In the case that a view-name is specified this attribute can be used to override the default key of the MVC Controller\u0027s ModelAndView attribute to keep a reply from underlying message flow. Default is \u0027reply\u0027.","required":false},{"name":"payload-expression","type":"string","description":"Allows you to specify SpEL expression to construct a Message payload","required":false},{"name":"view-name","type":"string","description":"View name to be resolved when rendering a response.","required":false},{"name":"mapped-request-headers","type":"string","description":"Comma-separated list of names of HttpHeaders to be mapped from the HTTP request into the MessageHeaders. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\"). The String \"HTTP_REQUEST_HEADERS\" will match against any of the standard HTTP Request headers.","required":false},{"name":"merge-with-default-converters","type":"boolean","description":"Flag to indicate if the default converters should be registered after any custom converters. This flag is used only if message-converters are provided, otherwise all default converters will be registered. Defaults to \"false\"","default":"false","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"request-channel","type":"string","description":"The receiving Message Channel of this endpoint.","required":true}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"request-mapping","description":"Defines configuration for org.springframework.integration.http.inbound.RequestMapping as RESTFul attributes for Spring Integration HTTP Inbound Endpoints.","attributes":[{"name":"produces","type":"string","description":"The producible media types of the mapped request, narrowing the primary mapping. The format is a sequence of media types (\"text/plain\", \"application/*), with a request only mapped if the Accept matches one of these media types. Expressions can be negated by using the \"!\" operator, as in \"!text/plain\", which matches all requests with a Accept other than \"text/plain\".","required":false},{"name":"headers","type":"string","description":"The headers of the mapped request, narrowing the primary mapping. A sequence of \"My-Header\u003dmyValue\" style expressions, with a request only mapped if each such header is found to have the given value. Expressions can be negated by using the \"!\u003d\" operator, as in \"My-Header!\u003dmyValue\". \"My-Header\" style expressions are also supported, with such headers having to be present in the request (allowed to have any value). \"!My-Header\" style expressions indicate that the specified header is not supposed to be present in the request. Also supports media type wildcards (*), for headers such as Accept and Content-Type. For instance, headers \u003d \"content-type\u003dtext/*\" will match requests with a Content-Type of \"text/html\", \"text/plain\", etc.","required":false},{"name":"params","type":"string","description":"The parameters of the mapped request, narrowing the primary mapping. A sequence of \"myParam\u003dmyValue\" style expressions, with a request only mapped if each such parameter is found to have the given value. Expressions can be negated by using the \"!\u003d\" operator, as in \"myParam!\u003dmyValue\". \"myParam\" style expressions are also supported, with such parameters having to be present in the request (allowed to have any value). \"!myParam\" style expressions indicate that the specified parameter is not supposed to be present in the request.","required":false},{"name":"consumes","type":"string","description":"The consumable media types of the mapped request, narrowing the primary mapping. The format is a sequence of media types (\"text/plain\", \"application/*), with a request only mapped if the Content-Type matches one of these media types. Expressions can be negated by using the \"!\" operator, as in \"!text/plain\", which matches all requests with a Content-Type other than \"text/plain\".","required":false}]},{"occurrence":{"min":0},"name":"cross-origin","description":"Marks this endpoint as permitting cross origin requests (CORS).","attributes":[{"name":"exposed-headers","type":"string","description":"List of response headers that the user-agent will allow the client to access. This property controls the value of actual response\u0027s \u0027Access-Control-Expose-Headers\u0027 header.","required":false},{"name":"max-age","type":"number","description":"Controls the cache duration for pre-flight responses. Setting this to a reasonable value can reduce the number of pre-flight request/response interaction required by the browser. This property controls the value of the \u0027Access-Control-Max-Age\u0027 header in the pre-flight response. Value set to \u0027-1\u0027 means undefined. Default value is 1800 seconds, or 30 minutes.","default":"1800","required":false},{"name":"method","type":"string","description":"The HTTP request methods to allow: GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE. Methods specified here overrides \u0027supported-methods\u0027 ones.","required":false,"restriction":{"type":"enum","values":["GET","POST","HEAD","OPTIONS","PUT","DELETE","TRACE"]}},{"name":"allowed-headers","type":"string","description":"Indicates which request headers can be used during the actual request. \"*\" means that all headers asked by the client are allowed. This property controls the value of pre-flight response\u0027s \u0027Access-Control-Allow-Headers\u0027 header. Default value is \"*\".","default":"*","required":false},{"name":"allow-credentials","type":"boolean","description":"Set to \"true\" if the the browser should include any cookies associated to the domain of the request being annotated, or \"false\" if it should not. Empty string \"\" means undefined. If true, the pre-flight response will include the header \u0027Access-Control-Allow-Credentials\u003dtrue\u0027. Default value is \"true\".","default":"true","required":false},{"name":"origin","type":"string","description":"List of allowed origins. \"*\" means that all origins are allowed. These values are placed in the \u0027Access-Control-Allow-Origin\u0027 header of both the pre-flight and actual responses. Default value is \"*\".","default":"*","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"header","description":"Specifies a Message header as a result of expression evaluation against ServletRequest and URI Variables.","attributes":[{"name":"expression","type":"string","description":"Expression to be evaluated to determine the value of the header.","required":true},{"name":"name","type":"string","description":"Name of the Message Header","required":true}]}]}},{"role":"endpoint","connectionType":"passthru","name":"graph-controller","description":"Configures a \u0027org.springframework.integration.http.management.IntegrationGraphController\u0027 bean to expose a REST API for the \u0027org.springframework.integration.support.management.graph.IntegrationGraphServer\u0027 bean. Note: Spring Web MVC must be present in the application to enable and register this component.","attributes":[{"name":"path","type":"string","description":"The root request mapping path for the \u0027IntegrationGraphController\u0027. Defaults to /integration.","default":"/integration","required":false}]},{"role":"endpoint","connectionType":"source","name":"inbound-channel-adapter","description":"Configures a Message Producing Endpoint for the \u0027org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport\u0027 that receives HTTP requests and doesn\u0027t produce responses.","attributes":[{"name":"send-timeout","type":"string","description":"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.","required":false},{"name":"channel","type":"string","description":"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).","required":false},{"name":"path","type":"string","description":"Comma-separated URI paths (e.g., /orderId/{order}). Ant-style path patterns are also supported (e.g. /myPath/*.do).","required":false},{"name":"payload-expression","type":"string","description":"Allows you to specify SpEL expression to construct a Message payload","required":false},{"name":"header-mapper","type":"string","description":"Specifies a reference to org.springframework.integration.mapping.HeaderMapper implementation bean. Only one of \u0027header-mapper\u0027 or \u0027mapped-request-headers\u0027 attributes can be provided.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"view-expression","type":"string","description":"SpEL expression that resolves to a view to be resolved when rendering a response. The expression can resolve to a view name or View object. In the case of \u0027inbound-gateway\u0027 the root object of the evaluation context is the reply message. In the case of \u0027inbound-channel-adapter\u0027 the \u0027evaluationContext\u0027 for this expression is rather lightweight, because there is no reply message, it has a \u0027BeanResolver\u0027 but no variables, so the usage of this attribute is somewhat limited. An example might be to resolve, at runtime, some scoped Bean that returns a view name or View object. This attribute is not allowed if there is a \u0027view-name\u0027 attribute.","required":false},{"name":"validator","type":"string","description":"A \u0027Validator\u0027 bean reference to validate a payload converted from the HTTP request.","required":false},{"name":"status-code-expression","type":"string","description":"A SpEL expression that resolves to an \u0027HttpStatus\u0027 code when rendering a response. The expression must return an object which can be converted to a \u0027org.springframework.http.HttpStatus\u0027 enum value. The \u0027evaluationContext\u0027 has a \u0027BeanResolver\u0027 but no variables, so the usage of this attribute is somewhat limited. An example might be to resolve, at runtime, some scoped Bean that returns an \u0027HttpStatus\u0027 value, or use a literal expression e.g. \"201\". By default \u0027status-code-expression\u0027 is null, meaning that the default \u0027200 OK\u0027 response status will be returned. The \u0027http:inbound-gateway\u0027 resolves the \u0027status code\u0027 from the \u0027http_statusCode\u0027 header of the reply Message.","required":false},{"name":"view-name","type":"string","description":"View name to be resolved when rendering a response.","required":false},{"name":"id","type":"string","required":false},{"name":"errors-key","type":"string","description":"In the case that a view-name is specified this attribute can be used to override the default key of the Errors (if the request cannot be handled). Defaults to \"errors\" (similar to normal MVC usage).","required":false},{"name":"mapped-request-headers","type":"string","description":"Comma-separated list of names of HttpHeaders to be mapped from the HTTP request into the MessageHeaders. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\"). The String \"HTTP_REQUEST_HEADERS\" will match against any of the standard HTTP Request headers.","required":false},{"name":"request-payload-type","type":"string","description":"Target type for payload that is the conversion result of the request.","required":false},{"name":"merge-with-default-converters","type":"boolean","description":"Flag to indicate if the default converters should be registered after any custom converters. This flag is used only if message-converters are provided, otherwise all default converters will be registered. Defaults to \"false\"","default":"false","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"error-code","type":"string","description":"In the case that a view-name is specified this attribute can be used to override the default error code under which the handling exception is exposed. Defaults to \"spring.integration.http.handler.error\" and is supplied with 3 parameters: the exception itself, its message and its stack trace as a String.","required":false},{"name":"supported-methods","type":"string","description":"Comma-separated HTTP Method names. Determines which types of Request are allowed with this Endpoint.","required":false,"restriction":{"type":"enum","values":["GET","POST","HEAD","OPTIONS","PUT","DELETE","TRACE"]}},{"name":"error-channel","type":"string","description":"The MessagingGateway\u0027s \u0027error-channel\u0027 where to send an ErrorMessage in case of Exception is caused from original message flow.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"message-converters","type":"string","description":"List of HttpMessageConverters for this Channel Adapter.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"request-mapping","description":"Defines configuration for org.springframework.integration.http.inbound.RequestMapping as RESTFul attributes for Spring Integration HTTP Inbound Endpoints.","attributes":[{"name":"headers","type":"string","description":"The headers of the mapped request, narrowing the primary mapping. A sequence of \"My-Header\u003dmyValue\" style expressions, with a request only mapped if each such header is found to have the given value. Expressions can be negated by using the \"!\u003d\" operator, as in \"My-Header!\u003dmyValue\". \"My-Header\" style expressions are also supported, with such headers having to be present in the request (allowed to have any value). \"!My-Header\" style expressions indicate that the specified header is not supposed to be present in the request. Also supports media type wildcards (*), for headers such as Accept and Content-Type. For instance, headers \u003d \"content-type\u003dtext/*\" will match requests with a Content-Type of \"text/html\", \"text/plain\", etc.","required":false},{"name":"params","type":"string","description":"The parameters of the mapped request, narrowing the primary mapping. A sequence of \"myParam\u003dmyValue\" style expressions, with a request only mapped if each such parameter is found to have the given value. Expressions can be negated by using the \"!\u003d\" operator, as in \"myParam!\u003dmyValue\". \"myParam\" style expressions are also supported, with such parameters having to be present in the request (allowed to have any value). \"!myParam\" style expressions indicate that the specified parameter is not supposed to be present in the request.","required":false},{"name":"consumes","type":"string","description":"The consumable media types of the mapped request, narrowing the primary mapping. The format is a sequence of media types (\"text/plain\", \"application/*), with a request only mapped if the Content-Type matches one of these media types. Expressions can be negated by using the \"!\" operator, as in \"!text/plain\", which matches all requests with a Content-Type other than \"text/plain\".","required":false}]},{"occurrence":{"min":0},"name":"cross-origin","description":"Marks this endpoint as permitting cross origin requests (CORS).","attributes":[{"name":"exposed-headers","type":"string","description":"List of response headers that the user-agent will allow the client to access. This property controls the value of actual response\u0027s \u0027Access-Control-Expose-Headers\u0027 header.","required":false},{"name":"max-age","type":"number","description":"Controls the cache duration for pre-flight responses. Setting this to a reasonable value can reduce the number of pre-flight request/response interaction required by the browser. This property controls the value of the \u0027Access-Control-Max-Age\u0027 header in the pre-flight response. Value set to \u0027-1\u0027 means undefined. Default value is 1800 seconds, or 30 minutes.","default":"1800","required":false},{"name":"method","type":"string","description":"The HTTP request methods to allow: GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE. Methods specified here overrides \u0027supported-methods\u0027 ones.","required":false,"restriction":{"type":"enum","values":["GET","POST","HEAD","OPTIONS","PUT","DELETE","TRACE"]}},{"name":"allowed-headers","type":"string","description":"Indicates which request headers can be used during the actual request. \"*\" means that all headers asked by the client are allowed. This property controls the value of pre-flight response\u0027s \u0027Access-Control-Allow-Headers\u0027 header. Default value is \"*\".","default":"*","required":false},{"name":"allow-credentials","type":"boolean","description":"Set to \"true\" if the the browser should include any cookies associated to the domain of the request being annotated, or \"false\" if it should not. Empty string \"\" means undefined. If true, the pre-flight response will include the header \u0027Access-Control-Allow-Credentials\u003dtrue\u0027. Default value is \"true\".","default":"true","required":false},{"name":"origin","type":"string","description":"List of allowed origins. \"*\" means that all origins are allowed. These values are placed in the \u0027Access-Control-Allow-Origin\u0027 header of both the pre-flight and actual responses. Default value is \"*\".","default":"*","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"header","description":"Specifies a Message header as a result of expression evaluation against ServletRequest and URI Variables.","attributes":[{"name":"expression","type":"string","description":"Expression to be evaluated to determine the value of the header.","required":true},{"name":"name","type":"string","description":"Name of the Message Header","required":true}]}]}},{"role":"endpoint","connectionType":"request_reply","name":"outbound-gateway","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler\u0027 that sends HTTP requests based on incoming messages and expects HTTP responses.","attributes":[{"name":"encode-uri","type":"string","description":"When set to \"false\", the real URI won\u0027t be encoded before the request is sent. This may be useful in some scenarios as it allows user control over the encoding, if needed, for example by using the \"url-expression\". Default is \"true\".","default":"true","required":false},{"name":"message-converters","type":"string","description":"Provide a reference to a list of HttpMessageConverter instances. If specified, these converters will replace all of the default converters that would normally be present on the underlying RestTemplate.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"http-method","type":"string","description":"The HTTP method to use when executing requests with this adapter Default is POST. This attribute cannot be provided if http-method-expression has a value.","required":false,"restriction":{"type":"enum","values":["GET","POST","HEAD","OPTIONS","PUT","DELETE","TRACE"]}},{"name":"id","type":"string","required":false},{"name":"mapped-request-headers","type":"string","description":"Comma-separated list of names of MessageHeaders to be mapped into the HttpHeaders of the HTTP request. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\"). The String \"HTTP_REQUEST_HEADERS\" will match against any of the standard HTTP Request headers.","required":false},{"name":"error-handler","type":"string","description":"Reference to a ResponseErrorHandler to be used by the underlying RestTemplate.","required":false},{"name":"charset","type":"string","description":"Specify the charset name to use for converting String-typed payloads to bytes. The default is \u0027UTF-8\u0027","required":false},{"name":"reply-channel","type":"string","description":"Identifies the channel to which this gateway will subscribe, to receive(send) reply Messages.","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this adapter is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"url-expression","type":"string","description":" SpEL Expression resolving to a URL to which the requests should be sent. The resolved value may include {placeholders} for further evaluation against uri-variables.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"header-mapper","type":"string","description":"Specify a reference to org.springframework.integration.mapping.HeaderMapper implementation bean. Only one of \u0027header-mapper\u0027 or \u0027mapped-request-headers\u0027 attributes can be provided.","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds.","required":false},{"name":"mapped-response-headers","type":"string","description":"Comma-separated list of names of HttpHeaders to be mapped from the HTTP response into the MessageHeaders. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\"). The String \"HTTP_RESPONSE_HEADERS\" will match against any of the standard HTTP Response headers.","required":false},{"name":"uri-variables-expression","type":"string","description":"Specifies the SpEL expression to be evaluate as a Map for URI variable placeholders within \u0027url\u0027. This attribute is mutually exclusive with \u0027uri-variable\u0027 sub-elements.","required":false},{"name":"rest-template","type":"string","description":"The reference to org.springframework.web.client.RestTemplate bean to send the HTTP Request.","required":false},{"name":"expected-response-type","type":"string","description":"The expected type to which the response body should be converted. Default is \u0027org.springframework.http.ResponseEntity\u0027. This attribute cannot be provided if expected-response-type-expression has a value","required":false},{"name":"trusted-spel","type":"boolean","description":"Set to \u0027true\u0027 if you trust SpEL expressions that might be evaluated to generate URI variables. The default value is \u0027false\u0027.","required":false},{"name":"url","type":"string","description":" URL to which the requests should be sent. It may include {placeholders} for evaluation against uri-variables.","required":false},{"name":"request-factory","type":"string","description":"Reference to a ClientHttpRequestFactory to be used by the underlying RestTemplate.","required":false},{"name":"http-method-expression","type":"string","description":"The SpEL expression to determine HTTP method, use when executing requests with this adapter, dynamically. This attribute cannot be provided if http-method has a value.","required":false},{"name":"transfer-cookies","type":"string","description":"When set to \"true\", if a response contains a \u0027Set-Cookie\u0027 header, it will be mapped to a \u0027Cookie\u0027 header. This enables simple cookie handling where subsequent HTTP interactions in the same message flow can use a cookie supplied by the server. Default is \"false\".","default":"false","required":false},{"name":"extract-request-payload","type":"string","description":"Specifies whether the outbound message\u0027s payload should be extracted when preparing the request body. Otherwise the Message instance itself will be serialized. The default value is \u0027true\u0027.","required":false},{"name":"expected-response-type-expression","type":"string","description":"SpEL expression to determine the type for the expected response to which the response body should be converted The returned value of the expression could be an instance of java.lang.Class or java.lang.String representing a fully qualified class name. This attribute cannot be provided if expected-response-type has a value","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"request-channel","type":"string","description":"The receiving Message Channel of this endpoint.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0,"max":-1},"name":"uri-variable","description":"Specify an expression for URI variable placeholder within \u0027url\u0027.","attributes":[{"name":"expression","type":"string","description":"Expression to be evaluated to determine the replacement value. The Message is the root object of the expression, therefore the \u0027payload\u0027 and \u0027headers\u0027 are available directly. Any bean may be resolved if the bean name is preceded with \u0027@\u0027.","required":true},{"name":"name","type":"string","description":"Name of the placeholder to be replaced.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}},{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}}],"integration":[{"role":"router","connectionType":"tee","name":"filter","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.filter.MessageFilter\u0027 that is used to decide whether a Message should be passed along or dropped based on some criteria","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"discard-channel","type":"string","description":"The channel where the filter will send the messages that were dropped","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"expression","type":"string","description":"A SpEL expression to be evaluated against the input Message as its root object.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"throw-exception-on-rejection","type":"boolean","description":"Throw an exception if the filter rejects the message (default false).","default":"false","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":2},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0,"max":2},"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","attributes":[{"name":"discard-within-advice","type":"string","description":"When true (default) any discard action (and exception thrown) will occur within the scope of the advice class(es) in the chain. Otherwise, these actions will occur after the advice chain returns.","default":"true","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"json-to-object-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.json.JsonToObjectTransformer\u0027 that converts a JSON String to an object.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"type","type":"string","description":"Fully qualified name of the java type to be created by this transformer (e.g. foo.bar.Foo)","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"object-mapper","type":"string","description":"Optional reference to a JsonObjectMapper instance. By default, a JsonObjectMapper that uses a Jackson 2 ObjectMapper.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"service-activator","description":"Defines an endpoint for the \u0027org.springframework.integration.handler.ServiceActivatingHandler\u0027 for exposing any bean reference as a service that receives request Messages from an \u0027input-channel\u0027 and may send reply Messages to an \u0027output-channel\u0027. The \u0027ref\u0027 may point to an instance that has either a single public method or a method with the @ServiceActivator annotation. Otherwise, the \u0027method\u0027 attribute should be provided along with \u0027ref\u0027.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"requires-reply","type":"boolean","description":"If set to \u0027true\u0027, a reply must return a non-null value. By setting \u0027requires-reply\u0027 to \u0027true\u0027, a \u0027ReplyRequiredException\u0027 will be raised for null reply messages. If \u0027requires-reply\u0027 is set to false, those messages are silently dropped. This attribute defaults to \u0027true\u0027 for \u0027transformer\u0027.","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"expression","type":"string","description":"A SpEL expression to be evaluated against the input Message as its root object.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"async","type":"string","description":"If the service method returns a ListenableFuture\u003c?\u003e and this flag is \u0027true\u0027, the calling thread is released immediately. The remaining flow will run on the thread that completes the future. If \u0027false\u0027 (default), the future will be sent as the payload of the result message. This has no effect with any other type of return.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"not-propagated-headers","type":"string","description":"Header patterns (\"xxx*\", \"*xxx\", \"*xxx*\" or \"xxx*yyy\") that will NOT be copied from the inbound message. \u0027*\u0027 means do not copy headers at all.","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"claim-check-in","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.ClaimCheckInTransformer\u0027 that stores a Message and returns a new Message, whose payload is the id of the stored Message.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"message-store","type":"string","description":"Reference to the MessageStore to be used by this Claim Check transformer. If not specified, the default reference will be to a bean named \u0027messageStore\u0027.","default":"messageStore","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"sequence","occurrence":{"min":0},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"management","attributes":[{"name":"stats-enabled-patterns","type":"string","description":"Comma separated list of simple patterns for component names for which message statistics will be enabled (response times, rates etc), as well as counts (a positive match here overrides `counts-enabled`, you can\u0027t have statistics without counts). (defaults to \u0027*\u0027). Only patterns that also match \u0027managed-components\u0027 will be considered. Enables statistics for those components that support statistics (channels - when sending, message handlers, etc). This is the initial setting only, individual components can have stats enabled/disabled at runtime. If a pattern starts with `!`, stats (and counts) are disabled for matches. Note: this means that \u0027!foo\u0027 here will disable stats and counts for \u0027foo\u0027 even if counts are enabled for \u0027foo\u0027 in \u0027counts-enabled\u0027. For components with names that match multiple patterns, the first pattern wins. Enabling stats at runtime also enables counts.","required":false},{"name":"default-counts-enabled","type":"string","description":"The default value for components that don\u0027t match \u0027counts-enabled-patterns\u0027. Defaults to false, or true when an Integration MBean Exporter is provided.","required":false},{"name":"metrics-factory","type":"string","description":"A MetricsFactory responsible for creating objects that maintain metrics for message channels and message handlers.","required":false},{"name":"default-stats-enabled","type":"string","description":"The default value for components that don\u0027t match \u0027stats-enabled-patterns\u0027. Defaults to false, or true when an Integration MBean Exporter is provided.","required":false},{"name":"counts-enabled-patterns","type":"string","description":"Comma separated list of simple patterns for component names for which message counts will be enabled (defaults to \u0027*\u0027). Only patterns that also match \u0027managed-components\u0027 will be considered. Enables message counting (`sendCount`, `errorCount`, `receiveCount`) for those components that support counters (channels, message handlers, etc). This is the initial setting only, individual components can have counts enabled/disabled at runtime. May be overridden by an entry in \u0027stats-enabled\u0027 which is additional functionality over simple counts. If a pattern starts with `!`, counts are disabled for matches. For components with names that match multiple patterns, the first pattern wins. Disabling counts at runtime also disables stats.","required":false},{"name":"default-logging-enabled","type":"string","description":"Set false, to disable all main-path debug logging for components that implement \u0027IntegrationManagement\u0027 (channels, message handlers etc). For high-volume environments avoiding calls to \u0027isDebuggingEnabled()` can improve performance.","required":false}]},{"role":"endpoint","connectionType":"passthru","name":"scatter-gather","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.scattergather.ScatterGatherHandler\u0027.","attributes":[{"name":"gather-timeout","type":"string","description":"Allows to specify how long the Scatter-Gather will wait for reply Messages for gathering. By default it will wait indefinitely. Value is specified in milliseconds.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"gather-channel","type":"string","description":"Identifies the channel to receive reply Messages for gathering.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"scatter-channel","type":"string","description":"Identifies the channel to send a message for \u0027auction\u0027 Scatter-Gather pattern variant. Mutually exclusive with \u0027scatterer\u0027 sub-element.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"requires-reply","type":"string","description":"Specify whether the Scatter-Gather must return a non-null value. This value is \u0027true\u0027 by default, hence a ReplyRequiredException will be thrown when the underlying aggregator returns a null value after \u0027gather-timeout\u0027. Note, if \u0027null\u0027 is a possibility, the \u0027gather-timeout\u0027 should be specified to avoid an indefinite wait.","default":"true","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027 - as a RecipientListRouter bean together with suffix \u0027.scatterer\u0027 - as a AggregatingMessageHandler bean together with suffix \u0027.gatherer\u0027","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":2},"name":"scatterer","attributes":[{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"recipient","description":"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.","attributes":[{"name":"selector-expression","type":"string","description":"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.","required":false},{"name":"channel","type":"string","description":"The channel (recepient) that the message will be send to. ","required":true}]}]}},{"occurrence":{"min":0,"max":2},"name":"gatherer","attributes":[{"name":"correlation-strategy","type":"string","description":"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.","required":false},{"name":"expire-groups-upon-timeout","type":"boolean","description":"Boolean flag specifying, if a group is completed due to timeout (reaper or \u0027group-timeout(-expression)\u0027), whether the group should be removed. When true, late arriving messages will form a new group. When false, they will be discarded. Default is \u0027true\u0027 for an aggregator and \u0027false\u0027 for a resequencer.","required":false},{"name":"group-timeout-expression","type":"string","description":"A SpEL expression to evaluate a \u0027group-timeout\u0027 with the MessageGroup as the #root evaluation context object for scheduling the MessageGroup forced completion, when the \u0027ReleaseStrategy\u0027 does not \u0027release\u0027 the group when the current Message arrives. If \u0027group-timeout-expression\u0027 evaluates to \u0027null\u0027 or less than \u00270\u0027, the MessageGroup won\u0027t be scheduled to be forced complete. The action taken when the group is forced complete depends on the \u0027send-partial-result-on-expiry\u0027 attribute. Mutually exclusive with the \u0027group-timeout\u0027 attribute.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"lock-registry","type":"string","description":"A reference to a \u0027org.springframework.integration.support.locks.LockRegistry\u0027 bean to obtain \u0027java.util.concurrent.locks.Lock\u0027 by \u0027groupId\u0027. Used for concurrent operations on MessageGroups. By default an internal \u0027DefaultLockRegistry\u0027 is used.","required":false},{"name":"message-store","type":"string","description":"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.","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"release-strategy-method","type":"string","description":"A method defined on the bean referenced by release-strategy, that implements the completion decision algorithm.","required":false},{"name":"group-timeout","type":"string","description":"A timeout in milliseconds to force the MessageGroup complete, when the \u0027ReleaseStrategy\u0027 does not \u0027release\u0027 the group when the current Message arrives. If \u0027group-timeout\u0027 is not provided or is less than \u00270\u0027 the MessageGroup won\u0027t be scheduled to be forced complete. The action taken when the group is forced complete depends on the \u0027send-partial-result-on-expiry\u0027 attribute. Mutually exclusive with the \u0027group-timeout-expression\u0027 attribute.","required":false},{"name":"release-lock-before-send","type":"boolean","description":"Set to true to release the message group lock before sending any output. See \"Avoiding Deadlocks\" in the Aggregator section of the reference manual for more information as to why this might be needed.","required":false},{"name":"headers-function","type":"string","description":"A reference to the \u0027Function\u0027 for merging and computing message headers for reply based on the \u0027MessageGroup\u0027 to release.","required":false},{"name":"expire-groups-upon-completion","type":"boolean","description":"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 \u0027false\u0027","default":"false","required":false},{"name":"send-partial-result-on-expiry","type":"string","description":"Specifies whether messages that expired should be aggregated and sent to the \u0027output-channel\u0027 or \u0027replyChannel\u0027. 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.expireMessageGroups(timeout). That could be accomplished via a ControlBus operation or by simply invoking that method if you have a reference to the MessageGroupStore instance.","required":false},{"name":"correlation-strategy-expression","type":"string","description":"A SpEL expression which implements correlation decision algorithm to apply to the Message (e.g., payload.getPerson().getId() - correlate based on the \u0027id\u0027 of the \u0027person\u0027 attribute of the message payload object)","required":false},{"name":"discard-channel","type":"string","description":"The channel where the aggregator will send the messages that timed out (if send-partial-results- on-expiry is \u0027false\u0027).","required":false},{"name":"release-strategy","type":"string","description":"A reference to a bean that implements the release strategy. The bean can be an implementation of the ReleaseStrategy interface or a POJO","required":false},{"name":"release-strategy-expression","type":"string","description":"A SpEL expression to evaluate against a root object that is the Collection of messages within the message group (e.g, size() \u003e 6)","required":false},{"name":"empty-group-min-timeout","type":"string","description":"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. If this is set, the group is scheduled for removal after normal or partial sequences group release. When a MessageGroupStoreReaper is configured to expire partial groups, empty groups are also removed, but using this value. Note that the actual time to expire an empty group will also be affected by the reaper\u0027s \u0027timeout\u0027 property and it could be as much as this value plus the timeout.","required":false},{"name":"scheduler","type":"string","description":"Provide a reference to the TaskScheduler instance to schedule \u0027forceComplete\u0027 on the MessageGroup when no new message arrives for the MessageGroup within the \u0027group-timeout\u0027 or \u0027group-timeout-expression\u0027. If it isn\u0027t provided, the default scheduler \u0027taskScheduler\u0027, registered in the ApplicationContext {ThreadPoolTaskScheduler} will be used. This attribute only applies if \u0027group-timeout\u0027 or \u0027group-timeout-expression\u0027 is specified.","required":false},{"name":"pop-sequence","type":"boolean","description":"Boolean flag specifying, if the \u0027MessageBuilder.popSequenceDetails()\u0027 should be called for the output message. Plays the opposite role to the \u0027AbstractMessageSplitter.setApplySequence()\u0027. Defaults to \u0027true\u0027.","default":"true","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false},{"name":"expression","type":"string","description":"A SpEL expression to be evaluated against the input message list as its root object.","required":false},{"name":"correlation-strategy-method","type":"string","description":"A method defined on the bean referenced by correlation-strategy, that implements the correlation decision algorithm","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":2},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expire-transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"expire-advice-chain","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"request_reply","name":"gateway","description":"Defines a Messaging Gateway - \u0027org.springframework.integration.gateway.GatewayProxyFactoryBean\u0027.","attributes":[{"name":"default-payload-expression","type":"string","description":" An expression that will be used to generate the payload for all methods in the service interface unless explicitly overridden by a method declaration. Variables include #args, #gatewayMethod; a bean resolver is also available, enabling expressions like \"@someBean(#args)\". ","required":false},{"name":"default-request-timeout","type":"string","description":" Provides the amount of time dispatcher would wait to send a message. This timeout would only apply if there is a potential to block in the send call. For example if this gateway is hooked up to a Queue channel. Value is specified in milliseconds; it can be a simple long value or a SpEL expression; array variable #args is available. ","required":false},{"name":"async-executor","type":"string","description":" Provide a reference to an implementation of java.util.concurrent.Executor to use for any of the interface methods that have a Future or ListenableFuture return type. This Executor will only be used for those async methods; the sync methods will be invoked on the caller\u0027s thread. By default, a SimpleAsyncTaskExecutor is used. Most executors return a FutureTask or FutureListenableTask respectively but a custom executor can return any Future. If the method return type is not compatible with the executor the flow will run on the caller\u0027s thread and the flow must return an appropriate Future. Finally, you can disable the gateway async handling by setting this attribute to \"\". This allows the downstream flow to return a Future that would otherwise have been compatible with the default executor. ","required":false},{"name":"default-reply-timeout","type":"string","description":" Allows you to specify how long this gateway will wait for the reply message before returning. By default it will wait indefinitely. \u0027null\u0027 is returned if the gateway times out. Value is specified in milliseconds; it can be a simple long value or a SpEL expression; array variable #args is available. Also used for receive-only operations as the receive timeout. ","required":false},{"name":"service-interface","type":"string","description":" The name of the interface which will be exposed by this gateway. ","required":false},{"name":"mapper","type":"string","description":" An MethodArgsMessageMapper to map the method arguments to a Message. When this is provided, no payload-expressions or headers are allowed; the custom mapper is responsible for creating the message. ","required":false},{"name":"id","type":"string","required":false},{"name":"default-reply-channel","type":"string","description":" Identifies default channel this gateway will subscribe to to receive reply Messages, which will then be converted to the return type of the method signature. ","required":false},{"name":"error-channel","type":"string","description":"Identifies a channel that error messages will be sent to if a failure occurs in this gateway\u0027s invocation. If no \"error-channel\" reference is provided, this gateway will propagate Exceptions to the caller. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"default-request-channel","type":"string","description":" Identifies default channel the messages will be sent to upon invocation of methods of this gateway ","required":false}],"childGroup":{"indicator":"sequence","occurrence":{"min":0},"children":[{"occurrence":{"min":0,"max":-1},"name":"default-header","description":" Provides a mechanism to enrich the message with custom message headers. These default headers are created for all methods on the service-interface (unless overridden by a specific method element). ","attributes":[{"name":"name","type":"string","description":"The name of the header","required":true},{"name":"expression","type":"string","description":"Expression to be evaluated to produce a value for the header. Either this or \u0027value\u0027 must be provided.","required":false},{"name":"value","type":"string","description":"The value of the header. Either this or \u0027expression\u0027 must be provided.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"method","description":" Provides mechanism to define method per channel mappings for this gateway ","attributes":[{"name":"payload-expression","type":"string","description":" Expression that should be evaluated to generate the payload. ","required":false},{"name":"request-timeout","type":"string","description":" Provides the amount of time dispatcher would wait to send a message. This timeout would only apply if there is a potential to block in the send call. For example if this gateway is hooked up to a Queue channel. Value is specified in milliseconds. ","required":false},{"name":"reply-timeout","type":"string","description":" Allows you to specify how long this gateway will wait for the reply message before returning. By default it will wait indefinitely. \u0027null\u0027 is returned if the gateway times out. Value is specified in milliseconds. ","required":false},{"name":"reply-channel","type":"string","description":" Identifies the channel to which this gateway will subscribe, to receive reply Messages. The reply Message will then be converted to the return type of the method signature. ","required":false},{"name":"request-channel","type":"string","description":" Identifies channel the message will be sent to upon invocation of this method ","required":false},{"name":"name","type":"string","description":" The name of the method ","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"header","description":" Provides a mechanism to enrich the message with custom message headers. When this method is invoked, the generated message will be enriched with these headers. ","attributes":[{"name":"name","type":"string","description":"The name of the header","required":true},{"name":"expression","type":"string","description":"Expression to be evaluated to produce a value for the header. Either this or \u0027value\u0027 must be provided.","required":false},{"name":"value","type":"string","description":"The value of the header. Either this or \u0027expression\u0027 must be provided.","required":false}]}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"idempotent-receiver","description":"Defines an \u0027org.springframework.integration.handler.advice.IdempotentReceiverInterceptor\u0027 bean.","attributes":[{"name":"key-expression","type":"string","description":"Expression to populate an \u0027ExpressionEvaluatingMessageProcessor\u0027. Used by the underlying \u0027org.springframework.integration.selector.MetadataStoreSelector\u0027. Evaluates an \u0027idempotentKey\u0027 using the request Message as the evaluation context root object. Mutually exclusive with \u0027selector\u0027 and \u0027key-strategy\u0027.","required":false},{"name":"value-expression","type":"string","description":"Expression to populate an \u0027ExpressionEvaluatingMessageProcessor\u0027. Used by the underlying \u0027org.springframework.integration.selector.MetadataStoreSelector\u0027. Evaluates a \u0027value\u0027 for the \u0027idempotentKey\u0027 using the request Message as the evaluation context root object. Mutually exclusive with \u0027selector\u0027 and \u0027value-strategy\u0027. By default, the \u0027MetadataStoreSelector\u0027 uses the \u0027timestamp\u0027 message header as the Metadata \u0027value\u0027.","required":false},{"name":"discard-channel","type":"string","description":"Identifies the channel to send a message when \u0027IdempotentReceiverInterceptor\u0027 doesn\u0027t accept the message. When omitted, duplicate messages are forwarded to the handler with a \u0027DUPLICATE_MESSAGE\u0027 header.","required":false},{"name":"value-strategy","type":"string","description":"A \u0027MessageProcessor\u0027 reference. Used by the underlying \u0027org.springframework.integration.selector.MetadataStoreSelector\u0027. Evaluates a \u0027value\u0027 for the \u0027idempotentKey\u0027 from the request Message. Mutually exclusive with \u0027selector\u0027 and \u0027value-expression\u0027. By default, the \u0027MetadataStoreSelector\u0027 uses the \u0027timestamp\u0027 message header as the Metadata \u0027value\u0027.","required":false},{"name":"key-strategy","type":"string","description":"A \u0027MessageProcessor\u0027 reference. Used by the underlying \u0027org.springframework.integration.selector.MetadataStoreSelector\u0027. Evaluates an \u0027idempotentKey\u0027 from the request Message. Mutually exclusive with \u0027selector\u0027 and \u0027key-expression\u0027.","required":false},{"name":"selector","type":"string","description":"A \u0027MessageSelector\u0027 reference. Used to identify if the message should be accepted by the target \u0027MessageHandler\u0027 endpoint. Mutually exclusive with \u0027metadata-store\u0027 and \u0027key-strategy\u0027 or \u0027key-expression\u0027.","required":false},{"name":"endpoint","type":"string","description":"Consumer Endpoint name(s) or patterns. To specify more than one name(pattern) use \u0027,\u0027 (e.g. endpoint\u003d\"xxx, xxx*, *xxx, *xxx*, xxx*yyy\"). The endpoint \u0027id\u0027 is used to retrieve the target endpoint\u0027s \u0027MessageHandler\u0027 bean (using its \u0027.handler\u0027 suffix), for which the \u0027IdempotentReceiverInterceptor\u0027 will be applied.","required":true},{"name":"id","type":"string","required":false},{"name":"metadata-store","type":"string","description":"A \u0027ConcurrentMetadataStore\u0027 reference. Used by the underlying \u0027org.springframework.integration.selector.MetadataStoreSelector\u0027. Mutually exclusive with \u0027selector\u0027. Optional. The default \u0027MetadataStoreSelector\u0027 uses an internal \u0027SimpleMetadataStore\u0027 which does not maintain state across application executions.","required":false},{"name":"throw-exception-on-rejection","type":"string","description":"Throw an exception if the \u0027IdempotentReceiverInterceptor\u0027 rejects the message (default false). It is applied regardless of whether or not a discard channel is provided.","required":false}]},{"role":"endpoint","connectionType":"passthru","name":"spel-function","description":"Defines a bean for the \u0027org.springframework.integration.config.SpelFunctionFactoryBean\u0027.","attributes":[{"name":"class","type":"string","description":"The fully qualified class name where to find the static method for SpEL function.","required":true},{"name":"id","type":"string","description":"Specifies the name of the SpEL function.","required":true},{"name":"method","type":"string","description":"The method signature in the form \u0027methodName[([arg_list])]\u0027, where \u0027arg_list\u0027 is an optional, comma-separated list of fully-qualified type names.","required":true}]},{"role":"endpoint","connectionType":"tee","name":"aggregator","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.config.AggregatorFactoryBean\u0027.","attributes":[{"name":"correlation-strategy","type":"string","description":"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.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"lock-registry","type":"string","description":"A reference to a \u0027org.springframework.integration.support.locks.LockRegistry\u0027 bean to obtain \u0027java.util.concurrent.locks.Lock\u0027 by \u0027groupId\u0027. Used for concurrent operations on MessageGroups. By default an internal \u0027DefaultLockRegistry\u0027 is used.","required":false},{"name":"message-store","type":"string","description":"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.","required":false},{"name":"release-strategy-method","type":"string","description":"A method defined on the bean referenced by release-strategy, that implements the completion decision algorithm.","required":false},{"name":"release-lock-before-send","type":"boolean","description":"Set to true to release the message group lock before sending any output. See \"Avoiding Deadlocks\" in the Aggregator section of the reference manual for more information as to why this might be needed.","required":false},{"name":"headers-function","type":"string","description":"A reference to the \u0027Function\u0027 for merging and computing message headers for reply based on the \u0027MessageGroup\u0027 to release.","required":false},{"name":"send-partial-result-on-expiry","type":"string","description":"Specifies whether messages that expired should be aggregated and sent to the \u0027output-channel\u0027 or \u0027replyChannel\u0027. 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.expireMessageGroups(timeout). That could be accomplished via a ControlBus operation or by simply invoking that method if you have a reference to the MessageGroupStore instance.","required":false},{"name":"expire-groups-upon-completion","type":"boolean","description":"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 \u0027false\u0027","default":"false","required":false},{"name":"discard-channel","type":"string","description":"The channel where the aggregator will send the messages that timed out (if send-partial-results- on-expiry is \u0027false\u0027).","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"release-strategy","type":"string","description":"A reference to a bean that implements the release strategy. The bean can be an implementation of the ReleaseStrategy interface or a POJO","required":false},{"name":"release-strategy-expression","type":"string","description":"A SpEL expression to evaluate against a root object that is the Collection of messages within the message group (e.g, size() \u003e 6)","required":false},{"name":"empty-group-min-timeout","type":"string","description":"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. If this is set, the group is scheduled for removal after normal or partial sequences group release. When a MessageGroupStoreReaper is configured to expire partial groups, empty groups are also removed, but using this value. Note that the actual time to expire an empty group will also be affected by the reaper\u0027s \u0027timeout\u0027 property and it could be as much as this value plus the timeout.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"pop-sequence","type":"boolean","description":"Boolean flag specifying, if the \u0027MessageBuilder.popSequenceDetails()\u0027 should be called for the output message. Plays the opposite role to the \u0027AbstractMessageSplitter.setApplySequence()\u0027. Defaults to \u0027true\u0027.","default":"true","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false},{"name":"correlation-strategy-method","type":"string","description":"A method defined on the bean referenced by correlation-strategy, that implements the correlation decision algorithm","required":false},{"name":"expire-groups-upon-timeout","type":"boolean","description":"Boolean flag specifying, if a group is completed due to timeout (reaper or \u0027group-timeout(-expression)\u0027), whether the group should be removed. When true, late arriving messages will form a new group. When false, they will be discarded. Default is \u0027true\u0027 for an aggregator and \u0027false\u0027 for a resequencer.","required":false},{"name":"group-timeout-expression","type":"string","description":"A SpEL expression to evaluate a \u0027group-timeout\u0027 with the MessageGroup as the #root evaluation context object for scheduling the MessageGroup forced completion, when the \u0027ReleaseStrategy\u0027 does not \u0027release\u0027 the group when the current Message arrives. If \u0027group-timeout-expression\u0027 evaluates to \u0027null\u0027 or less than \u00270\u0027, the MessageGroup won\u0027t be scheduled to be forced complete. The action taken when the group is forced complete depends on the \u0027send-partial-result-on-expiry\u0027 attribute. Mutually exclusive with the \u0027group-timeout\u0027 attribute.","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"group-timeout","type":"string","description":"A timeout in milliseconds to force the MessageGroup complete, when the \u0027ReleaseStrategy\u0027 does not \u0027release\u0027 the group when the current Message arrives. If \u0027group-timeout\u0027 is not provided or is less than \u00270\u0027 the MessageGroup won\u0027t be scheduled to be forced complete. The action taken when the group is forced complete depends on the \u0027send-partial-result-on-expiry\u0027 attribute. Mutually exclusive with the \u0027group-timeout-expression\u0027 attribute.","required":false},{"name":"correlation-strategy-expression","type":"string","description":"A SpEL expression which implements correlation decision algorithm to apply to the Message (e.g., payload.getPerson().getId() - correlate based on the \u0027id\u0027 of the \u0027person\u0027 attribute of the message payload object)","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"scheduler","type":"string","description":"Provide a reference to the TaskScheduler instance to schedule \u0027forceComplete\u0027 on the MessageGroup when no new message arrives for the MessageGroup within the \u0027group-timeout\u0027 or \u0027group-timeout-expression\u0027. If it isn\u0027t provided, the default scheduler \u0027taskScheduler\u0027, registered in the ApplicationContext {ThreadPoolTaskScheduler} will be used. This attribute only applies if \u0027group-timeout\u0027 or \u0027group-timeout-expression\u0027 is specified.","required":false},{"name":"expression","type":"string","description":"A SpEL expression to be evaluated against the input message list as its root object.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":2},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expire-transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"expire-advice-chain","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Defines an endpoint for the \u0027org.springframework.integration.handler.ExpressionEvaluatingMessageHandler\u0027 or \u0027org.springframework.integration.handler.MethodInvokingMessageHandler\u0027.","attributes":[{"name":"channel","type":"string","description":"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).","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"ref","type":"string","description":"A reference to a bean defined in the application context.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"expression","type":"string","description":"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.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"tee","name":"splitter","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.splitter.AbstractMessageProcessingSplitter\u0027 implementation or \u0027org.springframework.integration.splitter.DefaultMessageSplitter\u0027.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"requires-reply","type":"boolean","description":"If set to \u0027true\u0027, a reply must return a non-null value. By setting \u0027requires-reply\u0027 to \u0027true\u0027, a \u0027ReplyRequiredException\u0027 will be raised for null reply messages. If \u0027requires-reply\u0027 is set to false, those messages are silently dropped. This attribute defaults to \u0027true\u0027 for \u0027transformer\u0027.","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"delimiters","type":"string","description":"Provide one or more delimiters (as a single String value, e.g. delimiters\u003d\",;:\") for tokenizing String-typed payload values. This attribute is only allowed if no \u0027ref\u0027 or \u0027expression\u0027 have been provided since that is when the DefaultMessageSplitter would be used, and it\u0027s the implementation that contains the \"delimiters\" property.","required":false},{"name":"apply-sequence","type":"string","description":"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. When true, existing correlation and sequence related headers are pushed onto a stack; downstream components, such as aggregators may pop the stack to revert the existing headers after aggregation. Default is \u0027true\u0027.","required":false},{"name":"discard-channel","type":"string","description":"The channel where the splitter will send the messages that return an empty container from split function.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"expression","type":"string","description":"A SpEL expression to be evaluated against the input Message as its root object.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"message-history","description":"Will register a Message History writer which will track the message history. There can only be one Message History writer per ApplicationContext hierarchy. See also @EnableMessageHistory annotation.","attributes":[{"name":"tracked-components","type":"string","description":" The list of component name patterns you want to track (e.g., tracked-components\u003d\"inputChannel, out*, *Channel, *Service\") ","default":"*","required":false}]},{"role":"router","connectionType":"content_based_router","name":"payload-type-router","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.router.PayloadTypeRouter\u0027. The \u0027mapping\u0027 sub-elements specify the associations between Java types and target channels.","attributes":[{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"max":-1},"name":"mapping","description":"Element defines the rules for this router to map the type of a payload to the corresponding channel (e.g. \u003cint:mapping value\u003d\u0027java.lang.String\u0027 channel\u003d\u0027stringChannel\u0027/\u003e).","attributes":[{"name":"type","type":"string","description":"The type of the payload that this mapping will match, e.g. \u0027java.lang.String\u0027 or \u0027java.lang.Integer\u0027 ","required":false},{"name":"channel","type":"string","description":"The channel the matching message will be send to. ","required":false}]}]}},{"role":"endpoint","connectionType":"passthru","name":"header-enricher","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.HeaderEnricher\u0027 for values defined in the MessageHeaders.","attributes":[{"name":"should-skip-nulls","type":"boolean","description":"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.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"default-overwrite","type":"boolean","description":"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 \u0027overwrite\u0027 attribute. If the \u0027default-overwrite\u0027 attribute is not provided, then the specified header values will NOT overwrite any existing ones with the same header names.","required":false},{"name":"ref","type":"string","description":"Reference to an Object to be invoked for header values. The \u0027method\u0027 attribute is required along with this.","required":false},{"name":"method","type":"string","description":"Method to be invoked on the referenced Object as specified by the \u0027ref\u0027 attribute. The method should return a Map with String-typed keys.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"max":-1},"children":[{"name":"reply-channel","description":"Shortcut to specify value for \u0027replyChannel\u0027 header. Can be a \u0027ref\u0027 to the MessageChannel, a \u0027value\u0027 as name of the MessageChannel, or some valid SpEL \u0027expression\u0027 which returns the MessageChannel reference or name of the MessageChannel.","attributes":[{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated at runtime to determine the header value. The EvaluationContext will include variables for \u0027payload\u0027 and \u0027headers\u0027.","required":false},{"name":"method","type":"string","description":"Name of a method to be invoked on the referenced target object.","required":false},{"name":"value","type":"string","description":"Literal value to be associated with the given header name.","required":false},{"name":"ref","type":"string","description":"Reference to be associated with the given header name.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]}]}},{"name":"header-channels-to-string","description":"Converts the \u0027replyChannel\u0027 and \u0027errorChannel\u0027 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.","attributes":[{"name":"time-to-live-expression","type":"string","description":"Overrides the header channel registry default \u0027reaperDelay\u0027 - specifies the minimum time that the mapping will remain in the registry, in milliseconds.","required":false}]},{"name":"error-channel","description":"Shortcut to specify value for \u0027errorChannel\u0027 header. Can be a \u0027ref\u0027 to the MessageChannel, a \u0027value\u0027 as name of the MessageChannel, or some valid SpEL \u0027expression\u0027 which returns the MessageChannel reference or name of the MessageChannel.","attributes":[{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated at runtime to determine the header value. The EvaluationContext will include variables for \u0027payload\u0027 and \u0027headers\u0027.","required":false},{"name":"method","type":"string","description":"Name of a method to be invoked on the referenced target object.","required":false},{"name":"value","type":"string","description":"Literal value to be associated with the given header name.","required":false},{"name":"ref","type":"string","description":"Reference to be associated with the given header name.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]}]}},{"name":"correlation-id","description":"Shortcut to specify value for \u0027correlationId\u0027 header","attributes":[{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated at runtime to determine the header value. The EvaluationContext will include variables for \u0027payload\u0027 and \u0027headers\u0027.","required":false},{"name":"method","type":"string","description":"Name of a method to be invoked on the referenced target object.","required":false},{"name":"value","type":"string","description":"Literal value to be associated with the given header name.","required":false},{"name":"ref","type":"string","description":"Reference to be associated with the given header name.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]}]}},{"name":"expiration-date","description":"Shortcut to specify a value for the \u0027expirationDate\u0027 header (java.lang.Long).","attributes":[{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated at runtime to determine the header value. The EvaluationContext will include variables for \u0027payload\u0027 and \u0027headers\u0027.","required":false},{"name":"method","type":"string","description":"Name of a method to be invoked on the referenced target object.","required":false},{"name":"value","type":"string","description":"Literal value to be associated with the given header name.","required":false},{"name":"ref","type":"string","description":"Reference to be associated with the given header name.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]}]}},{"name":"priority","description":"Shortcut to specify a value for the \u0027priority\u0027 header.","attributes":[{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated at runtime to determine the header value. The EvaluationContext will include variables for \u0027payload\u0027 and \u0027headers\u0027.","required":false},{"name":"method","type":"string","description":"Name of a method to be invoked on the referenced target object.","required":false},{"name":"value","type":"string","description":"Literal value to be associated with the given header name.","required":false},{"name":"ref","type":"string","description":"Reference to be associated with the given header name.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]}]}},{"name":"routing-slip","description":"The \u0027RoutingSlip\u0027 header. semicolon-separated value of message channel names, or bean names of \u0027org.springframework.integration.routingslip.RoutingSlipRouteStrategy\u0027 or SpEL expression like \u0027request.headers[nextPathHeader]\u0027.","attributes":[{"name":"overwrite","type":"boolean","required":false},{"name":"value","type":"string","required":false}]},{"name":"header","description":"Element that accepts any user-defined header name/value pair.","attributes":[{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated at runtime to determine the header value. The EvaluationContext will include variables for \u0027payload\u0027 and \u0027headers\u0027.","required":false},{"name":"method","type":"string","description":"Name of a method to be invoked on the referenced target object.","required":false},{"name":"value","type":"string","description":"Literal value to be associated with the given header name.","required":false},{"name":"name","type":"string","description":"Name of the header to be added.","required":true},{"name":"ref","type":"string","description":"Reference to be associated with the given header name.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]}]}},{"occurrence":{"min":0},"name":"poller","description":"Allows you to configure Message Poller if this endpoint is a Polling Consumer","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"map-to-object-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.MapToObjectTransformer\u0027 that converts SpEL-based Map to an object.","attributes":[{"name":"type","type":"string","description":"Fully qualified name of the java type to be created by this transformer (e.g. foo.bar.Foo) NOTE: This attribute is mutually-exclusive with \u0027ref\u0027.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"ref","type":"string","description":"The name of the bean to be produced by this transformer. The bean MUST BE of scope \u0027prototype\u0027. NOTE: This attribute is mutually-exclusive with \u0027type\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"payload-deserializing-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.PayloadDeserializingTransformer\u0027 that converts a byte array to an object.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"deserializer","type":"string","description":"Reference to a Deserializer instance to convert from a byte array to an object. This is optional. The default will use standard Java deserialization.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"white-list","type":"string","description":"When using the default Deserializer, a list of package/class patterns indicating classes that are allowed to be deserialized. Consider providing this if you receive data from untrusted sources. Example: \"com.mycom.*, com.yourcom.*\".","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"router","connectionType":"tee","name":"header-filter","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.HeaderFilter\u0027 to remove values defined in the MessageHeaders.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"pattern-match","type":"boolean","description":"Boolean flag that specifies whether values provided in \u0027header-names\u0027 should be treated as match patterns or literal values. For example header-names\u003d\u0027foo*\u0027 would mean remove all headers that begin with \u0027foo\u0027 including the header named \u0027foo*\u0027. However if you want to treat \u0027*\u0027 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.","default":"true","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"header-names","type":"string","description":"Specify one or more header names (as a comma separated list) to be removed from the MessageHeaders of the Message being handled.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}]},{"role":"endpoint","connectionType":"source","name":"resource-inbound-channel-adapter","description":"Defines a Polling Channel Adapter for the \u0027org.springframework.integration.resource.ResourceRetrievingMessageSource\u0027 that receives Resource(s) and sends them to a MessageChannel identified via \u0027channel\u0027 attribute.","attributes":[{"name":"send-timeout","type":"string","description":"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.","required":false},{"name":"channel","type":"string","description":"Channel where Message will be sent to","required":false},{"name":"pattern-resolver","type":"string","description":"Reference to a org.springframework.core.io.support.ResourcePatternResolver.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"filter","type":"string","description":"Reference to the implementation of org.springframework.integration.util.CollectionFilter.","required":false},{"name":"id","type":"string","description":"Component identifier","required":false},{"name":"pattern","type":"string","description":"Location pattern expression (e.g., \"/**/*.txt\")","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"selector","attributes":[{"name":"id","type":"string","required":true},{"name":"ref","type":"string","required":true},{"name":"method","type":"string","required":false}]},{"role":"transformer","connectionType":"passthru","name":"object-to-map-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.ObjectToMapTransformer\u0027 that converts any Object payload to a SpEL Map.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"object-mapper","type":"string","description":"Optional reference to a JsonObjectMapper instance. By default, a JsonObjectMapper that uses a JsonObjectMapperProvider.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"flatten","type":"string","description":"Specifies if the result Map of Maps should be transformed further to flat keys of object\u0027s property paths. Default is \u0027true\u0027.","default":"true","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"object-to-string-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.ObjectToStringTransformer\u0027 that converts any Object payload to a String by invoking its toString() method.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"charset","type":"string","description":"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","default":"UTF-8","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"claim-check-out","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.ClaimCheckOutTransformer\u0027 that accepts a Message whose payload is a UUID and retrieves the Message associated with that id from a MessageStore if available (else null).","attributes":[{"name":"remove-message","type":"boolean","description":"If set to \u0027true\u0027 the Message will be removed from the MessageStore by this transformer. Useful when Message can be \u0027claimed\u0027 only once. DEFAULT is \u0027false\u0027.","default":"false","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"message-store","type":"string","description":"Reference to the MessageStore to be used by this Claim Check transformer. If not specified, the default reference will be to a bean named \u0027messageStore\u0027.","default":"messageStore","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"sequence","occurrence":{"min":0},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027."},{"role":"transformer","connectionType":"passthru","name":"transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.MessageTransformingHandler\u0027 based on the \u0027org.springframework.integration.transformer.Transformer\u0027 strategy.","attributes":[{"name":"expression","type":"string","description":"A SpEL expression to be evaluated against the input Message as its root object.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"requires-reply","type":"boolean","description":"If set to \u0027true\u0027, a reply must return a non-null value. By setting \u0027requires-reply\u0027 to \u0027true\u0027, a \u0027ReplyRequiredException\u0027 will be raised for null reply messages. If \u0027requires-reply\u0027 is set to false, those messages are silently dropped. This attribute defaults to \u0027true\u0027 for \u0027transformer\u0027.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"annotation-config","description":"Enables annotation support for Message Endpoints.","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"enable-publisher","attributes":[{"name":"proxy-target-class","type":"boolean","description":"Indicate whether subclass-based (CGLIB) proxies are to be created as opposed to standard Java interface-based proxies.","default":"false","required":false},{"name":"order","type":"number","description":"Indicate the order in which the \u0027org.springframework.integration.aop.PublisherAnnotationBeanPostProcessor\u0027 should be applied. Defaults to \u0027org.springframework.core.Ordered.LOWEST_PRECEDENCE\u0027.","default":"2147483647","required":false},{"name":"default-publisher-channel","type":"string","description":"Default output channel for the @Publisher annotation support.","required":false}]}]}},{"role":"endpoint","connectionType":"request_reply","name":"enricher","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.ContentEnricher\u0027 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.","attributes":[{"name":"request-channel","type":"string","description":"Channel to which a Message will be sent to get the data to use for enrichment. This attribute is optional. Not specifying a \u0027request-channel\u0027 is useful in situations, where only static values shall be used for enrichment using the \u0027property\u0027 sub-element.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"reply-timeout","type":"string","description":"Set the timeout value for receiving reply messages in milliseconds. If not explicitly configured, the default is one second. ","required":false},{"name":"error-channel","type":"string","description":"Used when exceptions occur in a downstream flow and allows the error handling flow to return an alternative object to use for enrichment. If no \"error-channel\" reference is provided, this enricher will propagate Exceptions to the caller.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"requires-reply","type":"boolean","description":"If you specify a \u0027request-channel\u0027 you can optionally set the \u0027requires-reply\u0027 attribute as well. If you set this attribute to \u0027true\u0027, a reply must return a non-null value. For example, you dispatch a message to the request-channel (backed by a \u0027QueueChannel\u0027). If the reply does not return within the specified \u0027replyTimeout\u0027, then the reply message will end up being Null. By setting \u0027requires-reply\u0027 to \u0027true\u0027, a \u0027ReplyRequiredException\u0027 will be raised for null reply messages. If \u0027requires-reply\u0027 is set to false, those messages are silently dropped. This attribute defaults to \u0027true\u0027, if not specified. ","default":"true","required":false},{"name":"should-clone-payload","type":"boolean","description":"Boolean value indicating whether any payload that implements Cloneable should be cloned prior to sending the Message to the request channel 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 \u0027Cloneable\u0027, then setting this attribute to \u0027true\u0027 has NO effect. Default is false.","required":false},{"name":"request-timeout","type":"string","description":"Set the timeout value for sending request messages in milliseconds. If not explicitly configured, the default is one second. ","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"request-payload-expression","type":"string","description":"By default the original message\u0027s payload will be used as payload that will be send to the request-channel. By specifying a SpEL expression as value for the \u0027request-payload-expression\u0027 attribute, a subset of the original payload, a header value or any other resolvable SpEL expression can be used as the basis for the payload, that will be sent to the request-channel. For the Expression evaluation the full message is available as the \u0027root object\u0027. For instance the following SpEL expressions (among others) are possible: - payload.foo - headers.foobar - new java.util.Date() - \u0027foo\u0027 + \u0027bar\u0027 If more sophisticated logic is required (e.g. changing the message headers etc.) please use additional downstream transformers.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"reply-channel","type":"string","description":"Channel where a reply Message is expected. This is optional; typically the auto-generated temporary reply channel is sufficient.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0,"max":-1},"name":"property","description":"Each property sub-element provides the name of a property (via the required \u0027name\u0027 attribute). That property should be settable on the target payload instance. Exactly one of the \u0027value\u0027 or \u0027expression\u0027 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.","attributes":[{"name":"null-result-expression","type":"string","description":"The expression to be evaluated, when the underlying enricher sub-flow returns null. The evaluation context root object is requestMessage.","required":false},{"name":"value","type":"string","description":"The value of the property. Either this or \u0027expression\u0027 must be provided.","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated to produce a value for the property. Either this or \u0027value\u0027 must be provided.","required":false},{"name":"name","type":"string","description":"The name of the property on the target payload. Please be aware that this value is a SpEL expression, also. For example, if your payload is represented by a \u0027java.util.Map\u0027, you can add new Map entries using the \u0027name\u0027 attribute, e.g. name\u003d\u0027foo\u0027 would add a new Map entry with key \u0027foo\u0027.","required":true},{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type. Allowed only in case of \u0027value\u0027 attribute.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"header","description":"Each header sub-element provides the name of a message header (via the required \u0027name\u0027 attribute). Exactly one of the \u0027value\u0027 or \u0027expression\u0027 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.","attributes":[{"name":"null-result-expression","type":"string","description":"The expression to be evaluated, when the underlying enricher sub-flow returns null. The evaluation context root object is requestMessage.","required":false},{"name":"value","type":"string","description":"The value of the property. Either this or \u0027expression\u0027 must be provided.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value. Unlike the Header Enricher, this attribute is \u0027true\u0027 by default, similar to the \u0027property\u0027 attribute.","default":"true","required":false},{"name":"expression","type":"string","description":"Expression to be evaluated to produce a value for the property. Either this or \u0027value\u0027 must be provided.","required":false},{"name":"name","type":"string","description":"The name of the property on the target payload. Please be aware that this value is a SpEL expression, also. For example, if your payload is represented by a \u0027java.util.Map\u0027, you can add new Map entries using the \u0027name\u0027 attribute, e.g. name\u003d\u0027foo\u0027 would add a new Map entry with key \u0027foo\u0027.","required":true},{"name":"type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type. Allowed only in case of \u0027value\u0027 attribute.","required":false}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"channel-interceptor","description":"Allows you to define channel interceptors (\u0027org.springframework.messaging.support.ChannelInterceptor\u0027 implementation) to be applied globally.","attributes":[{"name":"pattern","type":"string","description":"[REQUIRED] Channel name(s) or patterns. To specify more than one channel use \u0027,\u0027. A leading \u0027!\u0027 negates the pattern match (\u0027!foo*\u0027 means don\u0027t add interceptor where the name matches the pattern \u0027foo*\u0027). For example \"input*, foo, bar, !Foo*\".","required":false},{"name":"id","type":"string","required":false},{"name":"ref","type":"string","description":" [OPTIONAL] points to a bean reference which implements this interceptor. Could also be defined as inner \u0026lt;bean\u0026gt; element. ","required":false},{"name":"order","type":"number","description":"[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)","required":false}],"childGroup":{"indicator":"sequence","children":[]}},{"role":"transformer","connectionType":"passthru","name":"syslog-to-map-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.SyslogToMapTransformer\u0027 that converts an RFC5424 packet to a Map.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"channel","connectionType":"passthru","name":"publish-subscribe-channel","description":"Defines a \u0027org.springframework.integration.channel.PublishSubscribeChannel\u0027 that broadcasts messages to its subscribers.","attributes":[{"name":"id","type":"string","required":true},{"name":"message-converter","type":"string","description":" Used with \u0027datatype\u0027 to convert the message payload, if necessary, to one of the datatypes (in order). Note: only the MessageConverter.fromMessage(Message, Class) method is used. If the returned object is not a Message, the inbound headers will be copied; if the returned object is a Message, it is expected that the converter wil have fully populated the headers; no further action is performed by the channel. If null is returned, conversion to the next datatype (if any) will be attempted. Default is a \u0027DefaultDatatypeChannelMessageConverter\u0027 which, in turn, delegates to the \u0027integrationConversionService\u0027 (if present). ","required":false},{"name":"min-subscribers","type":"string","description":"Specifies the minimum subscribers required to be subscribed to this channel; if the minimum number of subscribers receive the message, the send is deemed to be successful (returns true). Defaults to 0.","required":false},{"name":"error-handler","type":"string","description":" Provides reference to a bean that implements org.springframework.util.ErrorHandler and provides a strategy for handling errors. This is especially useful for handling errors that occur during asynchronous execution of tasks that have been submitted to a TaskScheduler, where it may not be possible to throw the error to the original caller. ","required":false},{"name":"ignore-failures","type":"string","description":"Specify whether Exceptions thrown by any subscribed handler should be ignored (only logged).","default":"false","required":false},{"name":"task-executor","type":"string","description":"Provides the reference to a bean that implements org.springframework.core.task.TaskExecutor which is used when dispatching Messages to this channel\u0027s subscribers. Also, when using a TaskExecutor, keep in mind that any transaction active for the sender will NOT propagate to the handler invocation since the TaskExecutor dispatches to the handler on a separate Thread. Usually configured using the \u0027task\u0027 namespace support provided by Spring (e.g., \u003ctask:executor/\u003e).","required":false},{"name":"scope","type":"string","required":false},{"name":"max-subscribers","type":"string","description":"Specifies the maximum subscribers allowed on this channel; defaults to Integer.MAX_VALUE, unless a \u0027channelInitializer\u0027 bean has previously been declared, with a different default.","required":false},{"name":"apply-sequence","type":"string","description":"Specify whether the sequence size, sequence number, and correlation id headers should be set on Messages that are sent through this channel.","default":"false","required":false},{"name":"datatype","type":"string","description":" Allows you to identify this channel as a Datatype channel and specify the type of the Message payload this channel accepts (e.g., datatype\u003d\"java.lang.String\"). A Datatype channel is a channel that accepts messages containing payloads of a certain type. ","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"interceptors","description":"A list of ChannelInterceptor instances whose preSend and postSend methods will be applied to this channel. Note that the preReceive and postReceive methods have no effect for a SubscribableChannel instance.","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","attributes":[{"name":"bean","type":"string","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"wire-tap","description":"Allows you to configure a Wire Tap interceptor that will send a copy of the message to a channel identified by \u0027channel\u0027 attribute.","attributes":[{"name":"selector","type":"string","description":"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. Mutually exclusive with \u0027selector-expression\u0027.","required":false},{"name":"selector-expression","type":"string","description":"A boolean expression evaluated against the message to determine whether it should sent to the intercepting channel. Mutually exclusive with \u0027selector\u0027.","required":false},{"name":"channel","type":"string","required":true},{"name":"timeout","type":"string","description":"The timeout for sending the message to the intercepting channel","required":false},{"name":"id","type":"string","required":false}]}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"bridge","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.handler.BridgeHandler\u0027 that passes a Message to the output-channel without modifying it.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"max":-1},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"sink","name":"logging-channel-adapter","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.handler.LoggingHandler\u0027.","attributes":[{"name":"channel","type":"string","description":"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).","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"logger-name","type":"string","description":"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.","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"expression","type":"string","description":"Provide a SpEL expression to be evaluated against the Message as the root object. For example, the default behavior is equivalent to an expression of \"payload\", or an expression may evaluate against the payload itself (\"payload.address.city\") or headers (\"headers.foo\"). This attribute and the \u0027log-full-message\u0027 attribute are mutually exclusive. See the documentation on the \u0027log-full-message\u0027 attribute for more information.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"level","type":"string","description":"Specify the log level.","default":"INFO","required":false,"restriction":{"type":"enum","values":["FATAL","ERROR","WARN","INFO","DEBUG","TRACE"]}},{"name":"log-full-message","type":"string","description":"Specify whether to log the full message. This attribute and the \u0027expression\u0027 attribute are mutually exclusive. Setting this to true is equivalent to setting an expression value of \"#root\" since the Message is the root object against which the expression will be evaluated. If no \u0027expression\u0027 is provided, and this value is false (the default), only the payload will be logged.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"control-bus","description":"Defines a bean for the \u0027org.springframework.integration.config.ExpressionControlBusFactoryBean\u0027.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"router","connectionType":"content_based_router","name":"recipient-list-router","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.router.RecipientListRouter\u0027. A RecipientListRouter will send each received Message to a statically defined list of Message Channels. Another convenient option when configuring a RecipientListRouter is to define the \u0027selector-expression\u0027 for the \u0027mapping\u0027 sub elements. The \u0027selector-expression\u0027 uses Spring Expression Language (SpEL) and can be used as selectors for individual recipient channels. This is similar to using a Filter at the beginning of \u0027chain\u0027 to act as a \"Selective Consumer\". However, in this case, it\u0027s all combined rather concisely into the router\u0027s configuration.","attributes":[{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"name":"recipient","description":"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.","attributes":[{"name":"selector-expression","type":"string","description":"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.","required":false},{"name":"channel","type":"string","description":"The channel (recepient) that the message will be send to. ","required":true}]}]}},{"role":"transformer","connectionType":"passthru","name":"stream-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.StreamTransformer\u0027 that converts an \u0027InputStream\u0027 payload to a byte[] or String. Providing a \u0027charset\u0027 signals that the conversion to String is required.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"charset","type":"string","description":"Allows you to specify the Charset (e.g., US-ASCII, ISO-8859-1, UTF-8) to be used when transforming byte[]. None by default, meaning the payload will be byte[].","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"source","name":"inbound-channel-adapter","description":"Defines a Polling Channel Adapter for the \u0027org.springframework.integration.endpoint.MethodInvokingMessageSource\u0027, or \u0027org.springframework.integration.endpoint.ExpressionEvaluatingMessageSource\u0027 or \u0027org.springframework.integration.scripting.ScriptExecutingMessageSource\u0027 that receives from a MessageSource and sends to a MessageChannel. Note, when using the \u0027expression\u0027 attribute, or \u0027expression\u0027 or \u0027script\u0027 sub-element, there is not yet a root Message object and therefore the \u0027payload\u0027 and \u0027headers\u0027 properties are not available in the expression or script.","attributes":[{"name":"send-timeout","type":"string","description":"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. Defaults to \u0027-1\u0027 - blocking indefinitely.","required":false},{"name":"channel","type":"string","description":"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).","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"ref","type":"string","description":"A reference to a bean defined in the application context.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"expression","type":"string","description":"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.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expression","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"header","description":" Provides mechanism to enrich content of the message with custom message headers. When this method is going to be invoked the generated message will be enriched with these headers.","attributes":[{"name":"name","type":"string","description":"The name of the header","required":true},{"name":"expression","type":"string","description":"Expression to be evaluated to produce a value for the header. Either this or \u0027value\u0027 must be provided.","required":false},{"name":"value","type":"string","description":"The value of the header. Either this or \u0027expression\u0027 must be provided.","required":false}]}]}},{"role":"transformer","connectionType":"passthru","name":"payload-serializing-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.transformer.PayloadSerializingTransformer\u0027 that converts an object payload to a byte array.","attributes":[{"name":"serializer","type":"string","description":"Reference to a Serializer instance to convert from an object to a byte array. This is optional. The default will use standard Java serialization.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"tee","name":"resequencer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.aggregator.ResequencingMessageHandler\u0027.","attributes":[{"name":"correlation-strategy","type":"string","description":"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.","required":false},{"name":"method","type":"string","description":"A method defined on the bean referenced by \u0027ref\u0027 attribute","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"lock-registry","type":"string","description":"A reference to a \u0027org.springframework.integration.support.locks.LockRegistry\u0027 bean to obtain \u0027java.util.concurrent.locks.Lock\u0027 by \u0027groupId\u0027. Used for concurrent operations on MessageGroups. By default an internal \u0027DefaultLockRegistry\u0027 is used.","required":false},{"name":"message-store","type":"string","description":"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.","required":false},{"name":"release-strategy-method","type":"string","description":"A method defined on the bean referenced by release-strategy, that implements the completion decision algorithm.","required":false},{"name":"release-lock-before-send","type":"boolean","description":"Set to true to release the message group lock before sending any output. See \"Avoiding Deadlocks\" in the Aggregator section of the reference manual for more information as to why this might be needed.","required":false},{"name":"send-partial-result-on-expiry","type":"string","description":"Specifies whether messages that expired should be aggregated and sent to the \u0027output-channel\u0027 or \u0027replyChannel\u0027. 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.expireMessageGroups(timeout). That could be accomplished via a ControlBus operation or by simply invoking that method if you have a reference to the MessageGroupStore instance.","required":false},{"name":"discard-channel","type":"string","description":"The channel where the aggregator will send the messages that timed out (if send-partial-results- on-expiry is \u0027false\u0027).","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"release-strategy","type":"string","description":"A reference to a bean that implements the release strategy. The bean can be an implementation of the ReleaseStrategy interface or a POJO","required":false},{"name":"release-strategy-expression","type":"string","description":"A SpEL expression to evaluate against a root object that is the Collection of messages within the message group (e.g, size() \u003e 6)","required":false},{"name":"empty-group-min-timeout","type":"string","description":"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. If this is set, the group is scheduled for removal after normal or partial sequences group release. When a MessageGroupStoreReaper is configured to expire partial groups, empty groups are also removed, but using this value. Note that the actual time to expire an empty group will also be affected by the reaper\u0027s \u0027timeout\u0027 property and it could be as much as this value plus the timeout.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"pop-sequence","type":"boolean","description":"Boolean flag specifying, if the \u0027MessageBuilder.popSequenceDetails()\u0027 should be called for the output message. Plays the opposite role to the \u0027AbstractMessageSplitter.setApplySequence()\u0027. Defaults to \u0027true\u0027.","default":"true","required":false},{"name":"id","type":"string","description":"\u0027id\u0027 value: - Identifies the underlying Spring bean definition (AbstractEndpoint) - as MessageHandler bean alias together with suffix \u0027.handler\u0027","required":false},{"name":"correlation-strategy-method","type":"string","description":"A method defined on the bean referenced by correlation-strategy, that implements the correlation decision algorithm","required":false},{"name":"expire-groups-upon-timeout","type":"boolean","description":"Boolean flag specifying, if a group is completed due to timeout (reaper or \u0027group-timeout(-expression)\u0027), whether the group should be removed. When true, late arriving messages will form a new group. When false, they will be discarded. Default is \u0027true\u0027 for an aggregator and \u0027false\u0027 for a resequencer.","required":false},{"name":"group-timeout-expression","type":"string","description":"A SpEL expression to evaluate a \u0027group-timeout\u0027 with the MessageGroup as the #root evaluation context object for scheduling the MessageGroup forced completion, when the \u0027ReleaseStrategy\u0027 does not \u0027release\u0027 the group when the current Message arrives. If \u0027group-timeout-expression\u0027 evaluates to \u0027null\u0027 or less than \u00270\u0027, the MessageGroup won\u0027t be scheduled to be forced complete. The action taken when the group is forced complete depends on the \u0027send-partial-result-on-expiry\u0027 attribute. Mutually exclusive with the \u0027group-timeout\u0027 attribute.","required":false},{"name":"release-partial-sequences","type":"string","description":"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).","required":false},{"name":"ref","type":"string","description":"A reference to a bean that implements the handler. The bean can be an implementation of the MessageHandler interface or a POJO","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"group-timeout","type":"string","description":"A timeout in milliseconds to force the MessageGroup complete, when the \u0027ReleaseStrategy\u0027 does not \u0027release\u0027 the group when the current Message arrives. If \u0027group-timeout\u0027 is not provided or is less than \u00270\u0027 the MessageGroup won\u0027t be scheduled to be forced complete. The action taken when the group is forced complete depends on the \u0027send-partial-result-on-expiry\u0027 attribute. Mutually exclusive with the \u0027group-timeout-expression\u0027 attribute.","required":false},{"name":"correlation-strategy-expression","type":"string","description":"A SpEL expression which implements correlation decision algorithm to apply to the Message (e.g., payload.getPerson().getId() - correlate based on the \u0027id\u0027 of the \u0027person\u0027 attribute of the message payload object)","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"scheduler","type":"string","description":"Provide a reference to the TaskScheduler instance to schedule \u0027forceComplete\u0027 on the MessageGroup when no new message arrives for the MessageGroup within the \u0027group-timeout\u0027 or \u0027group-timeout-expression\u0027. If it isn\u0027t provided, the default scheduler \u0027taskScheduler\u0027, registered in the ApplicationContext {ThreadPoolTaskScheduler} will be used. This attribute only applies if \u0027group-timeout\u0027 or \u0027group-timeout-expression\u0027 is specified.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":2},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expire-transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"expire-advice-chain","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"role":"router","connectionType":"content_based_router","name":"router","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.router.AbstractMessageProcessingRouter\u0027 implementation that serves as an adapter for invoking a method on any Spring-managed object as specified by the \"ref\" and \"method\" attributes.","attributes":[{"name":"method","type":"string","description":"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\".","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"expression","type":"string","description":"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\u003d\"@someBean.someMethod(payload.foo, headers.bar)\"","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"ref","type":"string","description":"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).","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"expression","description":" You can use SpEL Expressions to implement simple computations. Generally a SpEL expression is evaluated and the result is either a channel name or alternatively the result can be mapped to a channel using the \u0027mapping\u0027 sub-element. The SpEL expression can return a Collection, effectively making this Router a Dynamic Recipient List Router. Whenever the expression returns multiple channel values the Message will be forwarded to each channel.","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"mapping","description":" Defines mapping rules for this router (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","attributes":[{"name":"channel","type":"string","description":"A reference to a bean that defines a Message Channel (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","required":false},{"name":"value","type":"string","description":"A value of the evaluation token that will be mapped to a channel reference (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","required":false}]}]}},{"role":"endpoint","connectionType":"tee","name":"barrier","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.aggregator.BarrierMessageHandler\u0027 that suspends a thread until a corresponding release message is received. The endpoint\u0027s message handler is a \u0027BarrierMessageHandler\u0027.","attributes":[{"name":"correlation-strategy","type":"string","description":"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.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"discard-channel","type":"string","description":"The message channel to which to send a trigger message if it arrives after the main thread has timed out.","required":false},{"name":"requires-reply","type":"string","description":"Specify whether the barrier must return a non-null value. This value will be \u0027false\u0027 by default, but if set to \u0027true\u0027, a ReplyRequiredException will be thrown when the barrier times out.","required":false},{"name":"id","type":"string","required":true},{"name":"correlation-strategy-expression","type":"string","description":"A SpEL expression which implements correlation decision algorithm to apply to the Message (e.g., payload.getPerson().getId() - correlate based on the \u0027id\u0027 of the \u0027person\u0027 attribute of the message payload object)","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"output-processor","type":"string","description":"A reference to a bean that implements \u0027MessageGroupProcessor\u0027. The processor is invoked to produce the result when the release is triggered. By default the payloads of the two messages are aggregated as a \u0027Collection\u0027 and the message headers are merged.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"timeout","type":"string","description":"The time in milliseconds to suspend the thread. See `requires-reply`. Also, if the trigger message is received first, the time that thread will wait before logging an error and exiting.","required":true},{"name":"correlation-strategy-method","type":"string","description":"A method defined on the bean referenced by correlation-strategy, that implements the correlation decision algorithm","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}},{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"wire-tap","description":"Defines a \u0027org.springframework.integration.channel.interceptor.WireTap\u0027 bean.","attributes":[{"name":"selector","type":"string","description":"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. Mutually exclusive with \u0027selector-expression\u0027.","required":false},{"name":"selector-expression","type":"string","description":"A boolean expression evaluated against the message to determine whether it should sent to the intercepting channel. Mutually exclusive with \u0027selector\u0027.","required":false},{"name":"channel","type":"string","required":true},{"name":"timeout","type":"string","description":"The timeout for sending the message to the intercepting channel","required":false},{"name":"pattern","type":"string","description":"[REQUIRED] Channel name(s) or patterns. To specify more than one channel use \u0027,\u0027 (e.g., channel-name-pattern\u003d\"input*, foo, bar\")","required":false},{"name":"id","type":"string","required":false},{"name":"order","type":"number","description":"[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)","required":false}]},{"role":"router","connectionType":"content_based_router","name":"header-value-router","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.router.HeaderValueRouter\u0027. The \u0027header-name\u0027 attribute specifies which header value to lookup. That header value can then provide the name of a channel to be resolved. Alternatively, 1 or more \u0027mapping\u0027 sub-elements may be provided with expected header values mapped to channels.","attributes":[{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false},{"name":"header-name","type":"string","description":"Name of the header whose value will be used to route messages.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0,"max":-1},"name":"mapping","description":" Defines mapping rules for this router (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","attributes":[{"name":"channel","type":"string","description":"A reference to a bean that defines a Message Channel (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","required":false},{"name":"value","type":"string","description":"A value of the evaluation token that will be mapped to a channel reference (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","required":false}]}]}},{"role":"endpoint","connectionType":"passthru","name":"delayer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.handler.DelayHandler\u0027 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 \u0027default-delay\u0027 of this endpoint.","attributes":[{"name":"ignore-expression-failures","type":"string","description":"Specify whether Exceptions thrown by \u0027expression\u0027 evaluation should be ignored (only logged). In this case case the delayer will fall back to the to the \u0027default-delay\u0027. Default behaviour. If this attribute is specified as \u0027false\u0027, any \u0027expression\u0027 evaluation Exception will be thrown to the caller without falling back to the to the \u0027default-delay\u0027.","default":"true","required":false},{"name":"message-store","type":"string","description":"Provide a reference to the MessageStore instance that should be used to store Messages while awaiting the delay.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"expression","type":"string","description":"Specify the SpEL expression that evaluates to the delay value in milliseconds, or a java.util.Date.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"id","type":"string","required":true},{"name":"scheduler","type":"string","description":"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.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"default-delay","type":"string","description":"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.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"expression","description":"Specify the SpEL expression that evaluates to the delay value in milliseconds, or a java.util.Date.","attributes":[{"name":"source","type":"string","description":"The reference to an ExpressionSource.","default":"expressionSource","required":false},{"name":"key","type":"string","description":"The key for retrieving the expression from an ExpressionSource.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}},{"occurrence":{"min":0},"name":"poller","description":"Defines the configuration metadata for a poller.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"publishing-interceptor","description":"Defines a MessagePublishingInterceptor which allows you to generate messages as a by-product of method invocations on Spring configured components.","attributes":[{"name":"default-channel","type":"string","description":"Specifies default-channel to publish messages","default":"nullChannel","required":false},{"name":"id","type":"string","required":true}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"method","attributes":[{"name":"payload","type":"string","required":false},{"name":"pattern","type":"string","required":false},{"name":"channel","type":"string","required":false}],"childGroup":{"indicator":"sequence","occurrence":{"min":0,"max":-1},"children":[{"name":"header","attributes":[{"name":"expression","type":"string","required":false},{"name":"value","type":"string","required":false},{"name":"name","type":"string","required":true}]}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"handler-retry-advice","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}},{"role":"channel","connectionType":"passthru","name":"channel","description":"Defines a Point-to-Point MessageChannel. See \u0027PointToPointChannelParser\u0027 source code for \u0027MessageChannel\u0027 implementations.","attributes":[{"name":"id","type":"string","required":true},{"name":"message-converter","type":"string","description":" Used with \u0027datatype\u0027 to convert the message payload, if necessary, to one of the datatypes (in order). Note: only the MessageConverter.fromMessage(Message, Class) method is used. If the returned object is not a Message, the inbound headers will be copied; if the returned object is a Message, it is expected that the converter wil have fully populated the headers; no further action is performed by the channel. If null is returned, conversion to the next datatype (if any) will be attempted. Default is a \u0027DefaultDatatypeChannelMessageConverter\u0027 which, in turn, delegates to the \u0027integrationConversionService\u0027 (if present). ","required":false},{"name":"fixed-subscriber","type":"boolean","description":"When true, only one subscriber is allowed; the subscriber must be available at context initialization time, and will be subscribed during bean initialization rather than when being started; \u0027auto-startup\u003d\"false\"\u0027 will take no effect on a subscriber to this channel, the subscriber will always be \"started\". The subscriber cannot be stopped. When true, no sub elements are allowed; \u0027datatype\u0027 is not allowed; \u0027message-converter\u0027 is not allowed. Default: false.","default":"false","required":false},{"name":"scope","type":"string","required":false},{"name":"datatype","type":"string","description":" Allows you to identify this channel as a Datatype channel and specify the type of the Message payload this channel accepts (e.g., datatype\u003d\"java.lang.String\"). A Datatype channel is a channel that accepts messages containing payloads of a certain type. ","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"queue","description":"Identifies this channel as a Queue style channel","attributes":[{"name":"message-store","type":"string","description":"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 \"capacity\" and \"ref\" attributes (only one can be specified).","required":false},{"name":"capacity","type":"string","description":"Capacity for this queue. Default capacity is 0 which means this queue will accumulate as many messages as available resources allow. This attribute is mutually exclusive with the \"message-store\" and \"ref\" attributes (only one can be specified).","required":false},{"name":"ref","type":"string","description":"Reference to a Queue that can be used to buffer the messages. This attribute is mutually exclusive with the \"capacity\" and \"message-store\" attributes (only one can be specified).","required":false}]},{"occurrence":{"min":0},"name":"priority-queue","description":"Identifies this channel as a Queue style channel where messages could be prioritized based on custom logic","attributes":[{"name":"message-store","type":"string","description":"A reference to a bean that implements \u0027org.springframework.integration.store.PriorityCapableChannelMessageStore\u0027. A message store that supports priority in a manner defined by the store. When set, the underlying channel will be a \u0027QueueChannel\u0027 that delegates to a \u0027MessageGroupQueue\u0027 backed by the store. Not allowed if \u0027comparator\u0027 is set.","required":false},{"name":"capacity","type":"string","description":"Capacity for this queue. Default capacity is 0 which means this queue will accumulate as many messages as available resources allow.","required":false},{"name":"comparator","type":"string","description":" Allows you to specify the reference to the bean which implements java.util.Comparator\u0026lt;Message\u0026lt;?\u0026gt;\u0026gt; interface and provides logic based on which Messages will be prioritized. Not allowed if \u0027message-store\u0027 is set. ","required":false}]},{"occurrence":{"min":0},"name":"rendezvous-queue","description":"Defines a rendezvous queue where a sender will block until the receiver arrives or vice-versa."},{"occurrence":{"min":0},"name":"dispatcher","description":"Provides MessageDispatcher configuration (i.e., failover, load-balancing, task-executor)","attributes":[{"name":"failover","type":"string","description":"Specifies whether this dispatcher has failover enabled. By default, failover will be enabled. Set this to \u0027false\u0027 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 \u0027order\u0027 attribute on the Message Handlers (or the @Ordered annotation on adapted methods).","required":false},{"name":"load-balancer","type":"string","description":"Defines a load-balancing strategy for the channel\u0027s dispatcher. The default is a round-robin load balancer. This attribute is mutually exclusive with \u0027load-balancer-ref\u0027.","required":false,"restriction":{"type":"enum","values":["round-robin","none"]}},{"name":"task-executor","type":"string","description":"Provides the reference to a bean that implements org.springframework.core.task.TaskExecutor which is used when dispatching Messages to this channel\u0027s subscribers. Also, when using a TaskExecutor, keep in mind that any transaction active for the sender will NOT propagate to the handler invocation since the TaskExecutor dispatches to the handler on a separate Thread. Usually configured using the \u0027task\u0027 namespace support provided by Spring (e.g., \u003ctask:executor/\u003e).","required":false},{"name":"max-subscribers","type":"string","description":"Specifies the maximum subscribers allowed on this channel; defaults to Integer.MAX_VALUE, unless a \u0027channelInitializer\u0027 bean has previously been declared, with a different default.","required":false},{"name":"load-balancer-ref","type":"string","description":"A reference to a bean that implements the \u0027org.springframework.integration.dispatcher.LoadBalancingStrategy\u0027. This attribute is mutually exclusive with \u0027load-balancer\u0027.","required":false}]},{"occurrence":{"min":0},"name":"interceptors","description":"A list of ChannelInterceptor instances whose preSend and postSend methods will be applied to this channel. Note that the preReceive and postReceive methods have no effect for a SubscribableChannel instance.","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","attributes":[{"name":"bean","type":"string","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"wire-tap","description":"Allows you to configure a Wire Tap interceptor that will send a copy of the message to a channel identified by \u0027channel\u0027 attribute.","attributes":[{"name":"selector","type":"string","description":"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. Mutually exclusive with \u0027selector-expression\u0027.","required":false},{"name":"selector-expression","type":"string","description":"A boolean expression evaluated against the message to determine whether it should sent to the intercepting channel. Mutually exclusive with \u0027selector\u0027.","required":false},{"name":"channel","type":"string","required":true},{"name":"timeout","type":"string","description":"The timeout for sending the message to the intercepting channel","required":false},{"name":"id","type":"string","required":false}]}]}}]}},{"role":"transformer","connectionType":"passthru","name":"object-to-json-transformer","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.json.ObjectToJsonTransformer\u0027 that converts any Object payload to a JSON String.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"object-mapper","type":"string","description":"Optional reference to a JsonObjectMapper instance. By default, a JsonObjectMapper that uses a Jackson 2 ObjectMapper.","required":false},{"name":"id","type":"string","required":false},{"name":"result-type","type":"string","description":"The type of the JSON transformation result. \u0027STRING\u0027 and \u0027NODE\u0027 values are allowed. If \u0027NODE\u0027, the JSON result tree depends on the provided implementation of \u0027org.springframework.integration.support.json.JsonObjectMapper\u0027 (e.g. JsonNode for Jackson). The default value is \u0027STRING\u0027.","default":"STRING","required":false,"restriction":{"type":"enum","values":["STRING","NODE","BYTES"]}},{"name":"content-type","type":"string","description":"Allows you to set the \u0027content-type\u0027 Message header. When a \u0027content-type\u0027 header is already present on the input message, the transformer will only override that value IF this attribute is explicitly set (e.g., content-type\u003d\"text/x-json\"). If this attribute is omitted, the transformer will set the \u0027content-type\u0027 header to \"application/json\", when there is no existing \u0027content-type\u0027 header on the input message. Setting the attribute to an empty string (\"\") will suppress setting the header to the default value, but will not remove the header, if present on the input message. If you wish to remove an existing header, use a \u003cheader-filter/\u003e before or after the transformer.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"transaction-synchronization-factory","description":"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 \u0027expression\u0027 and/or \u0027channel\u0027 attributes. If only the \u0027channel\u0027 attribute is present the received Message will be sent there as part of a particular synchronization scenario. If only the \u0027expression\u0027 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 \u0027channel\u0027 attribute. If the result of an expression is null or void, no Message will be generated.","attributes":[{"name":"id","type":"string","required":true}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"before-commit","attributes":[{"name":"channel","type":"string","description":"Reference to a MessageChannel where the result or an expression or received Message wil be sent.","required":false},{"name":"expression","type":"string","description":"SpEL expression to be executed as part of Transaction synchronization","required":false}]},{"occurrence":{"min":0},"name":"after-commit","attributes":[{"name":"channel","type":"string","description":"Reference to a MessageChannel where the result or an expression or received Message wil be sent.","required":false},{"name":"expression","type":"string","description":"SpEL expression to be executed as part of Transaction synchronization","required":false}]},{"occurrence":{"min":0},"name":"after-rollback","attributes":[{"name":"channel","type":"string","description":"Reference to a MessageChannel where the result or an expression or received Message wil be sent.","required":false},{"name":"expression","type":"string","description":"SpEL expression to be executed as part of Transaction synchronization","required":false}]}]}},{"role":"router","connectionType":"content_based_router","name":"exception-type-router","description":"Defines a Consumer Endpoint for the \u0027org.springframework.integration.router.ErrorMessageExceptionTypeRouter\u0027 which resolves the target MessageChannel for messages whose payload is an Exception. The channel resolution is based upon the most specific cause of the error for which a channel mapping exists.","attributes":[{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"task-executor","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"max":-1},"name":"mapping","description":" Element defines the rules for this router to map the exception type of the payload to the corresponding channel. (e.g. \u003cint:mapping exception-type\u003d\u0027java.lang.NullPointerException\u0027 channel\u003d\u0027npeChannel\u0027/\u003e) The most specific matching exception type is determined by navigating the hierarchy of \u0027exception causes\u0027 (e.g., payload.getCause()).","attributes":[{"name":"channel","type":"string","description":"The channel the matching message will be send to. ","required":false},{"name":"exception-type","type":"string","description":"The exception type of the payload that this mapping will match, e.g. \u0027java.lang.IllegalArgumentException\u0027 ","required":false}]}]}}],"jms":[{"role":"channel","connectionType":"passthru","name":"publish-subscribe-channel","description":"Defines a Message Channel (\u0027org.springframework.integration.jms.config.JmsChannelFactoryBean\u0027) that is backed by a JMS Topic.","attributes":[{"name":"task-executor","type":"string","description":"A reference to a Spring TaskExecutor (or standard JDK 1.5+ Executor) for executing JMS listener invokers. Default is a SimpleAsyncTaskExecutor in case of a DefaultMessageListenerContainer, using internally managed threads. For a SimpleMessageListenerContainer, listeners will always get invoked within the JMS provider\u0027s receive thread by default.","required":false},{"name":"id","type":"string","description":"ID for this channel. Required.","required":true},{"name":"prefetch","type":"number","description":"The maximum number of messages to load into a single session. Note that raising this number might lead to starvation of concurrent consumers!","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"topic","type":"string","description":"Reference to a JMS Topic. Either this attribute or the \u0027topic-name\u0027 must be provided, but only one.","required":false},{"name":"subscription","type":"string","description":"The name for the durable or shared subscription, if any.","required":false},{"name":"concurrency","type":"string","description":"The number of concurrent sessions/consumers to start for each listener. Can either be a simple number indicating the maximum number (e.g. \"5\") or a range indicating the lower as well as the upper limit (e.g. \"3-5\"). Note that a specified minimum is just a hint and might be ignored at runtime. Default is 1; keep concurrency limited to 1 in case of a topic listener or if message ordering is important; consider raising it for general queues.","required":false},{"name":"time-to-live","type":"string","description":"Specify the message time to live. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"delivery-persistent","type":"string","description":"Specify a boolean value indicating whether the delivery mode should be DeliveryMode.PERSISTENT (true) or DeliveryMode.NON_PERSISTENT (false). This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"destination-resolver","type":"string","description":"A reference to the DestinationResolver strategy for resolving destination names. Default is a DynamicDestinationResolver, using the JMS provider\u0027s queue/topic name resolution. Alternatively, specify a reference to a JndiDestinationResolver (typically in a J2EE environment).","required":false},{"name":"explicit-qos-enabled","type":"string","description":"Setting this attribute to true enables the use of quality of service attributes - message priority, delivery mode, time to live.","required":false},{"name":"durable","type":"string","description":"Boolean value indicating whether the Topic subscription is durable.","required":false},{"name":"connection-factory","type":"string","description":"Reference to a JMS ConnectionFactory. If none is provided, the default bean name for the reference will be \"jmsConnectionFactory\".","required":false},{"name":"acknowledge","type":"string","description":"The native JMS acknowledge mode: \"auto\", \"client\", \"dups-ok\" or \"transacted\". A value of \"transacted\" effectively activates a locally transacted Session; alternatively, specify an external \"transaction-manager\" via the corresponding attribute. Default is \"transacted\".","default":"transacted","required":false,"restriction":{"type":"enum","values":["auto","client","dups-ok","transacted"]}},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"topic-name","type":"string","description":"Name of a JMS Topic to be resolved by this channel\u0027s DestinationResolver.","required":false},{"name":"container-type","type":"string","description":"The type of this listener container: \"default\" or \"simple\", choosing between DefaultMessageListenerContainer and SimpleMessageListenerContainer.","required":false,"restriction":{"type":"enum","values":["default","simple"]}},{"name":"cache","type":"string","description":"The cache level for JMS resources: \"none\", \"connection\", \"session\", \"consumer\" or \"auto\". By default (\"auto\"), the cache level will effectively be \"consumer\", unless an external transaction manager has been specified - in which case the effective default will be \"none\" (assuming J2EE-style transaction management where the given ConnectionFactory is an XA-aware pool).","required":false,"restriction":{"type":"enum","values":["none","connection","session","consumer","auto"]}},{"name":"priority","type":"string","description":"Specify the default priority of the message. Overridden by the message priority header, if present; range 0-9. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"max-subscribers","type":"string","description":"Specifies the maximum subscribers allowed on this channel; defaults to Integer.MAX_VALUE, unless a \u0027channelInitializer\u0027 bean has previously been declared, with a different default.","required":false},{"name":"receive-timeout","type":"string","description":"Timeout for the container\u0027s consumers if message-driven is TRUE, or timeout for receive calls on the template if message-driven is FALSE.","required":false},{"name":"transaction-manager","type":"string","description":"A reference to an external PlatformTransactionManager (typically an XA-based transaction coordinator, e.g. Spring\u0027s JtaTransactionManager). If not specified, native acknowledging will be used (see \"acknowledge\" attribute).","required":false},{"name":"error-handler","type":"string","description":"A reference to an ErrorHandler strategy for handling any uncaught Exceptions that may occur during the execution of the underlying MessageListener.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"container-class","type":"string","description":"A custom listener container implementation class as fully qualified class name. Default is Spring\u0027s standard DefaultMessageListenerContainer or SimpleMessageListenerContainer, according to the \"container-type\" attribute. Note that a custom container class will typically be a subclass of either of those two Spring-provided standard container classes: Make sure that the \"container-type\" attribute matches the actual base type that the custom class derives from (\"default\" will usually be fine anyway, since most custom classes will derive from DefaultMessageListenerContainer).","required":false},{"name":"client-id","type":"string","description":"The JMS client id. Should be specified when using durable subscriptions.","required":false},{"name":"selector","type":"string","description":"The JMS message selector for this channel\u0027s underlying MessageListener.","required":false},{"name":"subscription-shared","type":"string","description":"Boolean property indicating whether to make the subscription shared. The shared subscription name to be used can be specified through the \u0027subscription\u0027 attribute. Default is \"false\". Set this to \"true\" to register a shared subscription. Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with \u0027durable\u0027 as well. Requires a JMS 2.0 compatible message broker.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"interceptors","description":"A list of ChannelInterceptor instances to be applied to this channel.","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","attributes":[{"name":"bean","type":"string","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"wire-tap","description":"Allows you to configure a Wire Tap interceptor that will send a copy of the message to a channel identified by \u0027channel\u0027 attribute.","attributes":[{"name":"selector","type":"string","description":"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. Mutually exclusive with \u0027selector-expression\u0027.","required":false},{"name":"selector-expression","type":"string","description":"A boolean expression evaluated against the message to determine whether it should sent to the intercepting channel. Mutually exclusive with \u0027selector\u0027.","required":false},{"name":"channel","type":"string","required":true},{"name":"timeout","type":"string","description":"The timeout for sending the message to the intercepting channel","required":false},{"name":"id","type":"string","required":false}]}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"header-enricher","description":"Defines a \u0027org.springframework.integration.transformer.HeaderEnricher\u0027 for adding statically configured JMS Headers.","attributes":[{"name":"output-channel","type":"string","required":false},{"name":"input-channel","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"default-overwrite","type":"boolean","description":"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 \u0027overwrite\u0027 attribute. If the \u0027default-overwrite\u0027 attribute is not provided, then the specified header values will NOT overwrite any existing ones with the same header names.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"max":-1},"children":[{"name":"reply-to","description":"The ReplyTo Destination for the JMS Message.","attributes":[{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false},{"name":"ref","type":"string","required":false}]},{"name":"correlation-id","description":"The Correlation ID for the JMS Message.","attributes":[{"name":"expression","type":"string","required":false},{"name":"value","type":"string","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false},{"name":"ref","type":"string","required":false}]},{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"request_reply","name":"outbound-gateway","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.jms.JmsSendingMessageHandler\u0027 to send messages to the JMS destination and wait for replies.","attributes":[{"name":"requires-reply","type":"string","description":"Specify whether this outbound gateway must return a non-null value. This value is \u0027true\u0027 by default, and a ReplyRequiredException will be thrown when the underlying service returns a null value.","default":"true","required":false},{"name":"idle-reply-listener-timeout","type":"string","description":"When using a \u0027reply-listener\u0027, specify whether the container should be started on-demand and stopped when idle for this time (in seconds). When omitted (or \u003c\u003d 0), the reply container is started/stopped according to the gateway\u0027s lifecycle.","required":false},{"name":"request-channel","type":"string","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"async","type":"string","description":"When false (default), the requesting thread is suspended until a reply is received or a timeout occurs; when true, the requesting thread is released and the reply is returned on the listener container thread. Requires a reply-listener child element and a \u0027correlation-key\u0027; otherwise this property is ignored.","required":false},{"name":"id","type":"string","required":false},{"name":"request-destination-expression","type":"string","description":"A SpEL expression to be evaluated at runtime against each Spring Integration request Message as the root object. The result should be either a Destination instance or a String representing the destination name. In the latter case, it will be passed to this adapter\u0027s DestinationResolver. This attribute is mutually exclusive with \u0027request-destination\u0027 and \u0027request-destination-name\u0027.","required":false},{"name":"reply-channel","type":"string","required":false},{"name":"request-pub-sub-domain","type":"string","description":"When resolving a request destination name (rather than a \u0027request-destination\u0027 reference or a \u0027request-destination-expression\u0027 that evaluates to a destination), a true value here specifies that the DestinationResolver should resolve Topics rather than Queues. Default is false.","required":false},{"name":"extract-request-payload","type":"string","description":"When \u0027true\u0027 (default), this attribute indicates that the JMS Message body will be created (by the MessageConverter) from the Spring Integration Message\u0027s payload. When \u0027false\u0027, the entire Spring Integration Message will be converted to the JMS Message body. In both cases, the message headers will be mapped to JMS headers/properties by the HeaderMapper.","default":"true","required":false},{"name":"correlation-key","type":"string","description":"Provide the name of a JMS property that should hold a generated UUID that the receiver of the JMS Message would expect to represent the CorrelationID. When waiting for the reply Message, a MessageSelector will be configured to match this property name and the UUID value that was sent in the request. If NO value is provided for this attribute, then the reply consumer\u0027s MessageSelector will be expecting the JMSCorrelationID to equal the Message ID of the request. If you want to store the outbound correlation UUID value in the actual \"JMSCorrelationID\" property, then set this value to \"JMSCorrelationID\". However, any other value will be treated as a JMS String Property. Note: when using a \u003creply-container/\u003e the correlation data includes a UUID representing the gateway as well as a message identifier. For this reason, the use of a \u003creply-container/\u003e requires the specification of a \u0027correlation-key\u0027 if an explicit reply-destination is provided.","required":false},{"name":"time-to-live","type":"string","description":"Specify the message time to live. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"reply-destination-name","type":"string","description":"Name of a destination which will be used for the replyTo header. This name will be handled by this gateway\u0027s DestinationResolver. This attribute is mutually exclusive with \u0027reply-destination\u0027 and \u0027reply-destination-expression\u0027.","required":false},{"name":"delivery-persistent","type":"string","description":"Specify a boolean value indicating whether the delivery mode should be DeliveryMode.PERSISTENT (true) or DeliveryMode.NON_PERSISTENT (false). This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"explicit-qos-enabled","type":"string","description":"Setting this attribute to true enables the use of quality of service attributes - message priority, delivery mode, time to live.","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds.","required":false},{"name":"header-mapper","type":"string","description":" A reference to an implementation of JmsHeaderMapper to map Message Headers to JMS Message. Default is a \u0027DefaultJmsHeaderMapper\u0027. ","required":false},{"name":"destination-resolver","type":"string","description":"A reference to the DestinationResolver strategy for resolving Destination names to Destination objects. Used when a reqest/reply destination name is provided, or an expression that resolves to a name. Default is a DynamicDestinationResolver.","required":false},{"name":"reply-destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use \u0027reply-destination-name\u0027 and \u0027reply-pub-sub-domain\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default). This attribute is mutually exclusive with \u0027reply-destination-name\u0027 and \u0027reply-destination-expression\u0027.","required":false},{"name":"priority","type":"string","description":"Specify the default priority of the message. Overridden by the message priority header, if present; range 0-9 This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"reply-pub-sub-domain","type":"string","description":"When resolving a reply destination name (rather than a \u0027reply-destination\u0027 reference or a \u0027reply-destination-expression\u0027 that evaluates to a destination), a true value here specifies that the DestinationResolver should resolve Topics rather than Queues. Default is false.","required":false},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"reply-destination-expression","type":"string","description":"A SpEL expression to be evaluated at runtime against each Spring Integration request Message as the root object. The result should be either a Destination instance or a String representing the destination name. In the latter case, it will be passed to this adapter\u0027s DestinationResolver together with the reply-pub-sub-domain attribute. This attribute is mutually exclusive with \u0027reply-destination\u0027 and \u0027reply-destination-name\u0027.","required":false},{"name":"request-destination-name","type":"string","description":"Name of a destination to which request messages will be sent. This name will be handled by this gateway\u0027s DestinationResolver. This attribute is mutually exclusive with \u0027request-destination\u0027 and \u0027request-destination-expression\u0027.","required":false},{"name":"receive-timeout","type":"string","description":"Timeout for the JMS MessageConsumer to receive the JMS reply Message. Default is 5 seconds.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"request-destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use \u0027request-destination-name\u0027 and \u0027request-pub-sub-domain\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default). This attribute is mutually exclusive with \u0027request-destination-name\u0027 and \u0027request-destination-expression\u0027.","required":false},{"name":"extract-reply-payload","type":"string","description":"When \u0027true\u0027 (default), this attribute indicates that the payload of the Spring Integration reply message will be created from the \u0027JMS Message\u0027 body (by the MessageConverter). When \u0027false\u0027, the Spring Integration Message payload will be the entire JMS Message. In both cases, the JMS Message headers/properties will be mapped to message headers by the HeaderMapper.","default":"true","required":false},{"name":"connection-factory","type":"string","description":"The name of a ConnectionFactory bean. Default is \u0027connectionFactory\u0027.","default":"jmsConnectionFactory","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this gateway is connected as a subscriber to a SubscribableChannel.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":3},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}},{"occurrence":{"min":0},"name":"reply-listener","description":"Configures the gateway to use an asynchronous listener container to receive reply messages.","attributes":[{"name":"max-concurrent-consumers","type":"string","description":"Specify the maximum number of concurrent consumers to create. Default is 1. If this setting is higher than \"concurrentConsumers\", the listener container will dynamically schedule new consumers at runtime, provided that enough incoming messages are encountered. Once the load goes down again, the number of consumers will be reduced to the standard level (\"concurrentConsumers\") again. Raising the number of concurrent consumers is recommendable in order to scale the consumption of messages coming in from a queue. However, note that any ordering guarantees are lost once multiple consumers are registered.","required":false},{"name":"idle-consumer-limit","type":"string","description":"Specify the limit for the number of consumers that are allowed to be idle at any given time. This limit is used to determine if a new invoker should be created. Increasing the limit causes invokers to be created more aggressively. This can be useful to ramp up the number of invokers faster. The default is 1, only scheduling a new invoker (which is likely to be idle initially) if none of the existing invokers is currently idle.","required":false},{"name":"max-messages-per-task","type":"string","description":"Specify the maximum number of messages to process in one task. More concretely, this limits the number of message reception attempts per task, which includes receive iterations that did not actually pick up a message until they hit their timeout","required":false},{"name":"concurrent-consumers","type":"string","description":"Specify the number of concurrent consumers to create. Default is 1. Specifying a higher value for this setting will increase the standard level of scheduled concurrent consumers at runtime: This is effectively the minimum number of concurrent consumers which will be scheduled at any given time. This is a static setting; for dynamic scaling, consider specifying the \"maxConcurrentConsumers\" setting instead. Raising the number of concurrent consumers is recommendable in order to scale the consumption of messages coming in from a queue. However, note that any ordering guarantees are lost once multiple consumers are registered","required":false},{"name":"idle-task-execution-limit","type":"string","description":"Specify the limit for idle executions of a consumer task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks. The default is 1, closing idle resources early once a task didn\u0027t receive a message.","required":false},{"name":"acknowledge","type":"string","description":"The native JMS acknowledge mode: \"auto\", \"client\", \"dups-ok\" or \"transacted\". The latter effectively activates a locally transacted Session.","required":false,"restriction":{"type":"enum","values":["auto","client","dups-ok","transacted"]}},{"name":"recovery-interval","type":"string","description":"Interval in milliseconds between the recovery attempts","required":false},{"name":"cache-level","type":"string","description":"Specify the level of caching that this listener container is allowed to apply: CACHE_NONE \u003d 0 CACHE_CONNECTION \u003d 1 CACHE_SESSION \u003d 2 CACHE_CONSUMER \u003d 3","required":false},{"name":"task-executor","type":"string","description":"A reference to a Spring TaskExecutor (or standard JDK 1.5+ Executor) for receiving the replies and handing them over to the sending thread. Default is a SimpleAsyncTaskExecutor.","required":false},{"name":"receive-timeout","type":"string","required":false}]}]}},{"role":"endpoint","connectionType":"source","name":"inbound-channel-adapter","description":"Defines a Polling Channel Adapter for the \u0027org.springframework.integration.jms.JmsDestinationPollingSource\u0027 for polling a JMS Destination.","attributes":[{"name":"destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use \u0027destination-name\u0027 and \u0027pub-sub-domain\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default).","required":false},{"name":"extract-payload","type":"string","default":"true","required":false},{"name":"pub-sub-domain","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Timeout for receive calls on the template. NOTE: for JmsTemplate, 0 means indefinite while -1 means no-wait.","required":false},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"header-mapper","type":"string","required":false},{"name":"destination-name","type":"string","required":false},{"name":"acknowledge","type":"string","description":"The native JMS acknowledge mode: \"auto\", \"client\", \"dups-ok\" or \"transacted\". The latter effectively activates a locally transacted Session. \u0027transacted\u0027 is not allowed on the inbound-channel-adapter; use \u0027session-transacted\u0027 instead. acknowlege\u003d\"transacted\" is used on the message-driven-channel-adapter and inbound gateway. Defaults to \"transacted\" when an implicit message listener container is configured. Not allowed when using an externally configured listener container; configure the container instead.","required":false,"restriction":{"type":"enum","values":["auto","client","dups-ok","transacted"]}},{"name":"id","type":"string","required":false},{"name":"connection-factory","type":"string","required":false},{"name":"channel","type":"string","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"jms-template","type":"string","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"session-transacted","type":"string","description":"Setting this attribute to true enables transactions. Cannot be specified if a jms-template is specified. Default false.","required":false},{"name":"destination-resolver","type":"string","required":false},{"name":"selector","type":"string","description":"A JMS Message Selector expression.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.jms.JmsSendingMessageHandler\u0027 to send messages to the JMS destination without waiting for replies.","attributes":[{"name":"explicit-qos-enabled","type":"string","description":"Setting this attribute to true enables the use of quality of service attributes - message priority, delivery mode, time to live.","required":false},{"name":"extract-payload","type":"string","default":"true","required":false},{"name":"pub-sub-domain","type":"string","description":"If true, specifies that destination names should resolve to Topics rather than Queues. Default is false.","required":false},{"name":"destination-expression","type":"string","description":"A SpEL expression to be evaluated at runtime against each Spring Integration Message as the root object. The result should be either a Destination instance or a String representing the destination name. In the latter case, it will be passed to this adapter\u0027s DestinationResolver. If the evaluation result is null, messages will be sent to the default destination of the underlying JmsTemplate. This attribute is mutually exclusive with \u0027destination\u0027 and \u0027destination-name\u0027.","required":false},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"header-mapper","type":"string","required":false},{"name":"destination-name","type":"string","description":"Name of the destination to which JMS Messages will be sent. This will be passed to the adapter\u0027s DestinationResolver. This attribute is mutually exclusive with \u0027destination\u0027 and \u0027destination-expression\u0027.","required":false},{"name":"priority","type":"string","description":"Specify the default priority of the message. Overridden by the message priority header, if present; range 0-9. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"delivery-mode-expression","type":"string","description":"A SpEL expression to be evaluated at runtime against each Spring Integration Message as the root object. The result should be an integer representing the delivery mode. If returns null, falls back to the \u0027delivery-persistent\u0027 or default. The explicit-qos-enabled has to be enabled. Note: the static delivery mode value can be specified on the JmsTemplate.","required":false},{"name":"id","type":"string","required":false},{"name":"time-to-live-expression","type":"string","description":"A SpEL expression to be evaluated at runtime against each Spring Integration Message as the root object. The result should be a long representing the time-to-live for the message. If returns null, falls back to the \u0027time-to-live\u0027 or default. The \u0027explicit-qos-enabled\u0027 has to be enabled. Note: the static time-to-live value can be specified on the JmsTemplate.","required":false},{"name":"connection-factory","type":"string","required":false},{"name":"channel","type":"string","required":false},{"name":"session-transacted","type":"string","description":"Setting this attribute to true enables transactions for the message send. If there is already a JMS transaction in process, perhaps from a message-driven-channel-adapter upstream, the same transaction is used; otherwise a new transaction is started. Cannot be specified if a jms-template is specified. Default false.","required":false},{"name":"destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use \u0027destination-name\u0027 and \u0027pub-sub-domain\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default). This attribute is mutually exclusive with \u0027destination-name\u0027 and \u0027destination-expression\u0027.","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this adapter is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"jms-template","type":"string","required":false},{"name":"time-to-live","type":"string","description":"Specify the message time to live. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"delivery-persistent","type":"string","description":"Specify a boolean value indicating whether the delivery mode should be DeliveryMode.PERSISTENT (true) or DeliveryMode.NON_PERSISTENT (false). This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"destination-resolver","type":"string","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0,"max":2},"children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"source","name":"message-driven-channel-adapter","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.jms.JmsMessageDrivenEndpoint\u0027 (one-way) to listen form message on the JMS destination.","attributes":[{"name":"destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use \u0027destination-name\u0027 and \u0027pub-sub-domain\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default).","required":false},{"name":"concurrent-consumers","type":"string","description":"Specify the number of concurrent consumers to create. Default is 1. Specifying a higher value for this setting will increase the standard level of scheduled concurrent consumers at runtime: This is effectively the minimum number of concurrent consumers which will be scheduled at any given time. This is a static setting; for dynamic scaling, consider specifying the \"maxConcurrentConsumers\" setting instead. Raising the number of concurrent consumers is recommendable in order to scale the consumption of messages coming in from a queue. However, note that any ordering guarantees are lost once multiple consumers are registered","required":false},{"name":"recovery-interval","type":"string","description":"Interval in milliseconds between the recovery attempts","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"acknowledge","type":"string","description":"The native JMS acknowledge mode: \"auto\", \"client\", \"dups-ok\" or \"transacted\". The latter effectively activates a locally transacted Session. \u0027transacted\u0027 is not allowed on the inbound-channel-adapter; use \u0027session-transacted\u0027 instead. acknowlege\u003d\"transacted\" is used on the message-driven-channel-adapter and inbound gateway. Defaults to \"transacted\" when an implicit message listener container is configured. Not allowed when using an externally configured listener container; configure the container instead.","required":false,"restriction":{"type":"enum","values":["auto","client","dups-ok","transacted"]}},{"name":"id","type":"string","required":false},{"name":"connection-factory","type":"string","required":false},{"name":"channel","type":"string","required":false},{"name":"client-id","type":"string","description":"The JMS client id for a shared Connection created and used by this container. Note that client ids need to be unique among all active Connections of the underlying JMS provider. Furthermore, a client id can only be assigned if the original ConnectionFactory hasn\u0027t already assigned one.","required":false},{"name":"task-executor","type":"string","description":"A reference to a Spring TaskExecutor (or standard JDK 1.5+ Executor) for running the listener threads. Default for the message listener container is a SimpleAsyncTaskExecutor.","required":false},{"name":"subscription-durable","type":"string","description":"Boolean property indicating whether to make the subscription durable. The durable subscription name to be used can be specified through the \"durableSubscriptionName\" property. Default is \"false\". Set this to \"true\" to register a durable subscription, typically in combination with a \"durableSubscriptionName\" value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain).","required":false},{"name":"max-concurrent-consumers","type":"string","description":"Specify the maximum number of concurrent consumers to create. Default is 1. If this setting is higher than \"concurrentConsumers\", the listener container will dynamically schedule new consumers at runtime, provided that enough incoming messages are encountered. Once the load goes down again, the number of consumers will be reduced to the standard level (\"concurrentConsumers\") again. Raising the number of concurrent consumers is recommendable in order to scale the consumption of messages coming in from a queue. However, note that any ordering guarantees are lost once multiple consumers are registered.","required":false},{"name":"pub-sub-domain","type":"string","description":"The boolean property used to configure the listener container with knowledge of what JMS domain is being used. Unless \u0027subscription-shared\u0027 or \u0027subscription-durable\u0027 is true, by default the value of this property is \u0027false\u0027 , indicating that the point-to-point domain, Queues, will be used. When true, the pub/sub domain, Topics, will be used.","required":false},{"name":"subscription-shared","type":"string","description":"Boolean property indicating whether to make the subscription shared. The shared subscription name to be used can be specified through the \u0027subscription-name\u0027 attribute. Default is \"false\". Set this to \"true\" to register a shared subscription, typically in combination with a \u0027subscription-name\u0027 value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with \u0027subscription-durable\u0027 as well. Only makes sense when listening to a topic (pub-sub domain), therefore this automatically sets \u0027pub-sub-domain\u0027 to \u0027true\u0027. Requires a JMS 2.0 compatible message broker.","required":false},{"name":"idle-task-execution-limit","type":"string","description":"Specify the limit for idle executions of a consumer task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks. The default is 1, closing idle resources early once a task didn\u0027t receive a message.","required":false},{"name":"container-class","type":"string","description":"A custom listener container implementation class as fully qualified class name. Default is Spring\u0027s standard DefaultMessageListenerContainer. Note that a custom container class will typically be a subclass of this standard container class. This attribute is mutually exclusive with \u0027container\u0027.","required":false},{"name":"transaction-manager","type":"string","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"container","type":"string","description":"A reference to a custom listener container implementation. Note that a custom container class will typically be a subclass of DefaultMessageListenerContainer. This attribute is mutually exclusive with \u0027container-class\u0027.","required":false},{"name":"subscription-name","type":"string","description":"The name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client\u0027s JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of the message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0).","required":false},{"name":"error-channel","type":"string","description":"If a (synchronous) downstream exception is thrown and an error-channel is specified, the MessagingException will be sent to this channel. Otherwise, any such exception will be propagated to the listener container and any JMS transaction will be rolled back. Any synchronous downstream exceptions in the error flow will also cause any JMS transaction to be rolled back.","required":false},{"name":"extract-payload","type":"string","default":"true","required":false},{"name":"max-messages-per-task","type":"string","description":"Specify the maximum number of messages to process in one task. More concretely, this limits the number of message reception attempts per task, which includes receive iterations that did not actually pick up a message until they hit their timeout","required":false},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"header-mapper","type":"string","required":false},{"name":"destination-name","type":"string","required":false},{"name":"idle-consumer-limit","type":"string","description":"Specify the limit for the number of consumers that are allowed to be idle at any given time. This limit is used to determine if a new invoker should be created. Increasing the limit causes invokers to be created more aggressively. This can be useful to ramp up the number of invokers faster. The default is 1, only scheduling a new invoker (which is likely to be idle initially) if none of the existing invokers is currently idle.","required":false},{"name":"send-timeout","type":"string","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"cache-level","type":"string","description":"Specify the level of caching that this listener container is allowed to apply: CACHE_NONE \u003d 0 CACHE_CONNECTION \u003d 1 CACHE_SESSION \u003d 2 CACHE_CONSUMER \u003d 3","required":false},{"name":"receive-timeout","type":"string","required":false},{"name":"destination-resolver","type":"string","required":false},{"name":"selector","type":"string","description":"A JMS Message Selector expression.","required":false}]},{"role":"channel","connectionType":"passthru","name":"channel","description":"Defines a Message Channel (\u0027org.springframework.integration.jms.config.JmsChannelFactoryBean\u0027) that is backed by a JMS Queue.","attributes":[{"name":"queue-name","type":"string","description":"Name of a JMS Queue to be resolved by this channel\u0027s DestinationResolver.","required":false},{"name":"task-executor","type":"string","description":"A reference to a Spring TaskExecutor (or standard JDK 1.5+ Executor) for executing JMS listener invokers. Default is a SimpleAsyncTaskExecutor in case of a DefaultMessageListenerContainer, using internally managed threads. For a SimpleMessageListenerContainer, listeners will always get invoked within the JMS provider\u0027s receive thread by default.","required":false},{"name":"id","type":"string","description":"ID for this channel. Required.","required":true},{"name":"prefetch","type":"number","description":"The maximum number of messages to load into a single session. Note that raising this number might lead to starvation of concurrent consumers!","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"concurrency","type":"string","description":"The number of concurrent sessions/consumers to start for each listener. Can either be a simple number indicating the maximum number (e.g. \"5\") or a range indicating the lower as well as the upper limit (e.g. \"3-5\"). Note that a specified minimum is just a hint and might be ignored at runtime. Default is 1; keep concurrency limited to 1 in case of a topic listener or if message ordering is important; consider raising it for general queues.","required":false},{"name":"time-to-live","type":"string","description":"Specify the message time to live. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"delivery-persistent","type":"string","description":"Specify a boolean value indicating whether the delivery mode should be DeliveryMode.PERSISTENT (true) or DeliveryMode.NON_PERSISTENT (false). This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"destination-resolver","type":"string","description":"A reference to the DestinationResolver strategy for resolving destination names. Default is a DynamicDestinationResolver, using the JMS provider\u0027s queue/topic name resolution. Alternatively, specify a reference to a JndiDestinationResolver (typically in a J2EE environment).","required":false},{"name":"message-driven","type":"boolean","description":"Specifies whether this channel should be Message-Driven. The value is \"true\" by default. Set to \"false\" if this channel should be pollable.","default":"true","required":false},{"name":"explicit-qos-enabled","type":"string","description":"Setting this attribute to true enables the use of quality of service attributes - message priority, delivery mode, time to live.","required":false},{"name":"connection-factory","type":"string","description":"Reference to a JMS ConnectionFactory. If none is provided, the default bean name for the reference will be \"jmsConnectionFactory\".","required":false},{"name":"acknowledge","type":"string","description":"The native JMS acknowledge mode: \"auto\", \"client\", \"dups-ok\" or \"transacted\". A value of \"transacted\" effectively activates a locally transacted Session; alternatively, specify an external \"transaction-manager\" via the corresponding attribute. Default is \"transacted\".","default":"transacted","required":false,"restriction":{"type":"enum","values":["auto","client","dups-ok","transacted"]}},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"container-type","type":"string","description":"The type of this listener container: \"default\" or \"simple\", choosing between DefaultMessageListenerContainer and SimpleMessageListenerContainer.","required":false,"restriction":{"type":"enum","values":["default","simple"]}},{"name":"cache","type":"string","description":"The cache level for JMS resources: \"none\", \"connection\", \"session\", \"consumer\" or \"auto\". By default (\"auto\"), the cache level will effectively be \"consumer\", unless an external transaction manager has been specified - in which case the effective default will be \"none\" (assuming J2EE-style transaction management where the given ConnectionFactory is an XA-aware pool).","required":false,"restriction":{"type":"enum","values":["none","connection","session","consumer","auto"]}},{"name":"priority","type":"string","description":"Specify the default priority of the message. Overridden by the message priority header, if present; range 0-9. This setting will only take effect if \u0027explicit-qos-enabled\u0027 is true.","required":false},{"name":"max-subscribers","type":"string","description":"Specifies the maximum subscribers allowed on this channel; defaults to Integer.MAX_VALUE, unless a \u0027channelInitializer\u0027 bean has previously been declared, with a different default.","required":false},{"name":"receive-timeout","type":"string","description":"Timeout for the container\u0027s consumers if message-driven is TRUE, or timeout for receive calls on the template if message-driven is FALSE.","required":false},{"name":"transaction-manager","type":"string","description":"A reference to an external PlatformTransactionManager (typically an XA-based transaction coordinator, e.g. Spring\u0027s JtaTransactionManager). If not specified, native acknowledging will be used (see \"acknowledge\" attribute).","required":false},{"name":"error-handler","type":"string","description":"A reference to an ErrorHandler strategy for handling any uncaught Exceptions that may occur during the execution of the underlying MessageListener.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"container-class","type":"string","description":"A custom listener container implementation class as fully qualified class name. Default is Spring\u0027s standard DefaultMessageListenerContainer or SimpleMessageListenerContainer, according to the \"container-type\" attribute. Note that a custom container class will typically be a subclass of either of those two Spring-provided standard container classes: Make sure that the \"container-type\" attribute matches the actual base type that the custom class derives from (\"default\" will usually be fine anyway, since most custom classes will derive from DefaultMessageListenerContainer).","required":false},{"name":"selector","type":"string","description":"The JMS message selector for this channel\u0027s underlying MessageListener.","required":false},{"name":"queue","type":"string","description":"Reference to a JMS Queue. Either this attribute or the \u0027queue-name\u0027 must be provided, but only one.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"interceptors","description":"A list of ChannelInterceptor instances to be applied to this channel.","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","attributes":[{"name":"bean","type":"string","description":"Reference to a bean in this Application Context that implements ChannelInterceptor","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"wire-tap","description":"Allows you to configure a Wire Tap interceptor that will send a copy of the message to a channel identified by \u0027channel\u0027 attribute.","attributes":[{"name":"selector","type":"string","description":"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. Mutually exclusive with \u0027selector-expression\u0027.","required":false},{"name":"selector-expression","type":"string","description":"A boolean expression evaluated against the message to determine whether it should sent to the intercepting channel. Mutually exclusive with \u0027selector\u0027.","required":false},{"name":"channel","type":"string","required":true},{"name":"timeout","type":"string","description":"The timeout for sending the message to the intercepting channel","required":false},{"name":"id","type":"string","required":false}]}]}}]}},{"role":"endpoint","connectionType":"inbound_request_reply","name":"inbound-gateway","description":"Defines a Messaging Gateway Endpoint for the \u0027org.springframework.integration.jms.JmsMessageDrivenEndpoint\u0027 to listen for messages in the JMS destination and produce replies.","attributes":[{"name":"reply-timeout","type":"string","required":false},{"name":"request-timeout","type":"string","required":false},{"name":"extract-reply-payload","type":"string","default":"true","required":false},{"name":"concurrent-consumers","type":"string","description":"Specify the number of concurrent consumers to create. Default is 1. Specifying a higher value for this setting will increase the standard level of scheduled concurrent consumers at runtime: This is effectively the minimum number of concurrent consumers which will be scheduled at any given time. This is a static setting; for dynamic scaling, consider specifying the \"maxConcurrentConsumers\" setting instead. Raising the number of concurrent consumers is recommendable in order to scale the consumption of messages coming in from a queue. However, note that any ordering guarantees are lost once multiple consumers are registered","required":false},{"name":"explicit-qos-enabled-for-replies","type":"string","required":false},{"name":"recovery-interval","type":"string","description":"Interval in milliseconds between the recovery attempts","required":false},{"name":"error-channel","type":"string","description":"If a (synchronous) downstream exception is thrown and an \"error-channel\" is specified, the MessagingException will be sent to this channel; any response from which will be returned as a reply by the gateway. If an \"error-channel\" is not supplied, any such exception will be propagated to the listener container and any JMS transaction will be rolled back. Any synchronous downstream exceptions in the error flow will also cause any JMS transaction to be rolled back.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"reply-time-to-live","type":"string","required":false},{"name":"acknowledge","type":"string","description":"The native JMS acknowledge mode: \"auto\", \"client\", \"dups-ok\" or \"transacted\". The latter effectively activates a locally transacted Session. \u0027transacted\u0027 is not allowed on the inbound-channel-adapter; use \u0027session-transacted\u0027 instead. acknowlege\u003d\"transacted\" is used on the message-driven-channel-adapter and inbound gateway. Defaults to \"transacted\" when an implicit message listener container is configured. Not allowed when using an externally configured listener container; configure the container instead.","required":false,"restriction":{"type":"enum","values":["auto","client","dups-ok","transacted"]}},{"name":"request-channel","type":"string","required":true},{"name":"id","type":"string","required":false},{"name":"request-destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use \u0027request-destination-name\u0027 and \u0027request-pub-sub-domain\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default).","required":false},{"name":"connection-factory","type":"string","required":false},{"name":"reply-channel","type":"string","required":false},{"name":"client-id","type":"string","description":"The JMS client id for a shared Connection created and used by this container. Note that client ids need to be unique among all active Connections of the underlying JMS provider. Furthermore, a client id can only be assigned if the original ConnectionFactory hasn\u0027t already assigned one.","required":false},{"name":"subscription-durable","type":"string","description":"Boolean property indicating whether to make the subscription durable. The durable subscription name to be used can be specified through the \"durableSubscriptionName\" property. Default is \"false\". Set this to \"true\" to register a durable subscription, typically in combination with a \"durableSubscriptionName\" value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain).","required":false},{"name":"max-concurrent-consumers","type":"string","description":"Specify the maximum number of concurrent consumers to create. Default is 1. If this setting is higher than \"concurrentConsumers\", the listener container will dynamically schedule new consumers at runtime, provided that enough incoming messages are encountered. Once the load goes down again, the number of consumers will be reduced to the standard level (\"concurrentConsumers\") again. Raising the number of concurrent consumers is recommendable in order to scale the consumption of messages coming in from a queue. However, note that any ordering guarantees are lost once multiple consumers are registered.","required":false},{"name":"idle-task-execution-limit","type":"string","description":"Specify the limit for idle executions of a consumer task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks. The default is 1, closing idle resources early once a task didn\u0027t receive a message.","required":false},{"name":"extract-request-payload","type":"string","default":"true","required":false},{"name":"reply-delivery-persistent","type":"string","required":false},{"name":"container-class","type":"string","description":"A custom listener container implementation class as fully qualified class name. Default is Spring\u0027s standard DefaultMessageListenerContainer. Note that a custom container class will typically be a subclass of this standard container class. This attribute is mutually exclusive with \u0027container\u0027.","required":false},{"name":"transaction-manager","type":"string","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"request-pub-sub-domain","type":"string","required":false},{"name":"container","type":"string","description":"A reference to a custom listener container implementation. Note that a custom container class will typically be a subclass of DefaultMessageListenerContainer. This attribute is mutually exclusive with \u0027container-class\u0027.","required":false},{"name":"subscription-name","type":"string","description":"The name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client\u0027s JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of the message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0).","required":false},{"name":"reply-priority","type":"string","required":false},{"name":"default-reply-topic-name","type":"string","required":false},{"name":"max-messages-per-task","type":"string","description":"Specify the maximum number of messages to process in one task. More concretely, this limits the number of message reception attempts per task, which includes receive iterations that did not actually pick up a message until they hit their timeout","required":false},{"name":"subscription-shared","type":"string","description":"Boolean property indicating whether to make the subscription shared. The shared subscription name to be used can be specified through the \u0027subscription-name\u0027 attribute. Default is \"false\". Set this to \"true\" to register a shared subscription, typically in combination with a \u0027subscription-name\u0027 value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with \u0027subscription-durable\u0027 as well. Only makes sense when listening to a topic (pub-sub domain), therefore this automatically sets \u0027request-pub-sub-domain\u0027 to \u0027true\u0027. Requires a JMS 2.0 compatible message broker.","required":false},{"name":"message-converter","type":"string","description":"A reference to the MessageConverter strategy for converting between JMS Messages and the Spring Integration Message payloads. Default is a SimpleMessageConverter.","required":false},{"name":"correlation-key","type":"string","description":"Provide the name of a JMS property that should be copied from the request Message to the reply Message. If NO value is provided for this attribute then the JMSMessageID from the request will be copied into the JMSCorrelationID of the reply unless there is already a value in the JMSCorrelationID property of the newly created reply Message in which case nothing will be copied. If the JMSCorrelationID of the request Message should be copied into the JMSCorrelationID of the reply Message instead, then this value should be set to \"JMSCorrelationID\". Any other value will be treated as a JMS String Property to be copied as-is from the request Message into the reply Message with the same property name.","required":false},{"name":"default-reply-destination","type":"string","description":"A reference to a javax.jms.Destination by bean name. As an alternative to a bean reference, use either \u0027default-reply-queue-name\u0027 or \u0027default-reply-topic-name\u0027 which will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default).","required":false},{"name":"idle-consumer-limit","type":"string","description":"Specify the limit for the number of consumers that are allowed to be idle at any given time. This limit is used to determine if a new invoker should be created. Increasing the limit causes invokers to be created more aggressively. This can be useful to ramp up the number of invokers faster. The default is 1, only scheduling a new invoker (which is likely to be idle initially) if none of the existing invokers is currently idle.","required":false},{"name":"header-mapper","type":"string","description":" Allows to specify custom implementation of JmsHeaderMapper to map Message Headers to JMS Message. ","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"cache-level","type":"string","description":"Specify the level of caching that this listener container is allowed to apply: CACHE_NONE \u003d 0 CACHE_CONNECTION \u003d 1 CACHE_SESSION \u003d 2 CACHE_CONSUMER \u003d 3","required":false},{"name":"receive-timeout","type":"string","required":false},{"name":"destination-resolver","type":"string","required":false},{"name":"request-destination-name","type":"string","required":false},{"name":"default-reply-queue-name","type":"string","required":false},{"name":"selector","type":"string","description":"A JMS Message Selector expression.","required":false}]}],"kafka":[{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Defines the Consumer Endpoint for the KafkaProducerMessageHandler that writes the contents of the Message to kafka broker.","attributes":[{"name":"channel","type":"string","description":"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).","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"message-key","type":"string","description":"Specifies the Key for the Kafka message. This attribute is mutually exclusive with \u0027message-key-expression\u0027 attribute.","required":false},{"name":"send-timeout","type":"number","description":"Specifies a timeout in milliseconds for how long the \u0027KafkaProducerMessageHandler\u0027 should wait wait for send operation results. Defaults to 10 seconds. The timeout is applied only in \u0027sync\u0027 mode.","required":false},{"name":"id","type":"string","required":false},{"name":"order","type":"number","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"send-success-channel","type":"string","description":"Specifies the channel to which message with a payload of type \u0027org.apache.kafka.clients.producer.RecordMetadata\u0027 will be sent after a successful send.","required":false},{"name":"send-timeout-expression","type":"string","description":"Specifies an expression that is evaluated to determine a timeout in milliseconds for how long the \u0027KafkaProducerMessageHandler\u0027 should wait wait for send operation results. Defaults to 10 seconds. The timeout is applied only in \u0027sync\u0027 mode.","required":false},{"name":"topic-expression","type":"string","description":"Specifies the expression to determine the name of the Kafka topic against the Message at runtime. This attribute is mutually exclusive with \u0027topic\u0027 attribute.","required":false},{"name":"partition-id","type":"string","description":"Specifies the target partition for the Kafka message. This attribute is mutually exclusive with \u0027partition-id-expression\u0027 attribute.","required":false},{"name":"send-failure-channel","type":"string","description":"Specifies the channel to which an ErrorMessage for a failed send will be sent.","required":false},{"name":"timestamp-expression","type":"string","description":"Specifies the expression to determine the timestamp for a Kafka record against the Message at runtime.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"error-message-strategy","type":"string","description":"Specifies the Strategy for building an ErrorMessage.","required":false},{"name":"partition-id-expression","type":"string","description":"Specifies the expression to determine the partition for Kafka message against the Message at runtime. This attribute is mutually exclusive with \u0027partition-id\u0027 attribute.","required":false},{"name":"topic","type":"string","description":"Specifies the name of the Kafka topic. This attribute is mutually exclusive with \u0027topic-expression\u0027 attribute.","required":false},{"name":"sync","type":"boolean","description":"Specifies whether to block the sending thread until the producer callback has been invoked, indicating the broker has accepted the message (or an exception thrown if the send fails). Default: false.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"kafka-template","type":"string","description":"Specifies the KafkaTemplate used to publish messages.","required":false},{"name":"message-key-expression","type":"string","description":"Specifies the expression to determine the Key for Kafka message against the Message at runtime. This attribute is mutually exclusive with \u0027message-key\u0027 attribute.","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"source","name":"message-driven-channel-adapter","description":"Defines the Message Producing Endpoint for the KafkaMessageDrivenChannelAdapter.","attributes":[{"name":"send-timeout","type":"string","description":"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.","required":false},{"name":"payload-type","type":"string","description":"Set the payload type to convert to when using a type-aware message converter such as the StringJsonMessageConverter. Fully qualified class name; defaults to \u0027java.lang.Object\u0027.","required":false},{"name":"channel","type":"string","description":"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).","required":false},{"name":"message-converter","type":"string","description":"An \u0027org.springframework.kafka.support.converter.MessageConverter\u0027 bean reference. if mode \u003d \u0027record\u0027 must be a \u0027RecordMessageConverter\u0027; if mode \u003d \u0027batch\u0027 must be a `BatchMessageConverter`. Defaults to the default implementation for each mode.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"recovery-callback","type":"string","description":"Used in conjunction with a \u0027retry-template\u0027; in most cases this will be an \u0027ErrorMessageSendingRecoverer\u0027. Omitting this element will cause an exception to be thrown to the listener container after retries are exhausted.","required":false},{"name":"id","type":"string","required":false},{"name":"listener-container","type":"string","description":"An \u0027org.springframework.kafka.listener.AbstractMessageListenerContainer\u0027 bean reference.","required":false},{"name":"retry-template","type":"string","description":"A retry template for retrying deliveries; an \u0027error-channel\u0027 is not allowed when a retry template is provided; configure a \u0027recovery-callback\u0027 such as an \u0027ErrorMessageSendingRecoverer\u0027 when using a retry template.","required":false},{"name":"mode","type":"string","description":"\u0027record\u0027 or \u0027batch\u0027 - default \u0027record\u0027 - one converted ConsumerRecord per message, when \u0027batch\u0027 then the payload is a collection of converted ConsumerRecords.","default":"record","required":false,"restriction":{"type":"enum","values":["record","batch"]}},{"name":"error-channel","type":"string","description":"Message Channel to which error Messages should be sent.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"error-message-strategy","type":"string","description":"Specifies the Strategy for building an ErrorMessage.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}]}],"mqtt":[{"role":"endpoint","connectionType":"source","name":"message-driven-channel-adapter","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.mqtt.inbound.MqttPahoMessageDrivenChannelAdapter\u0027 that subscribes to the MQTT topic(s) and produces messages to the channel.","attributes":[{"name":"url","type":"string","description":"MQTT broker URL.","required":false},{"name":"topics","type":"string","description":"Specifies one or more (comma-delimited) topics on which to listen for messages.","required":false},{"name":"channel","type":"string","required":false},{"name":"client-factory","type":"string","description":" An MqttClientFactory used to create clients and connection options if you wish to override the defaults. Default is DefaultMqttClientFactory. ","required":false},{"name":"send-timeout","type":"string","description":"Allows you to specify how long this inbound-channel-adapter will wait for the message to be sent successfully to the message channel, before throwing an exception. This only applies when the channel might block (such as a bounded QueueChannel that is full). ","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition, which is an instance of either \u0027EventDrivenConsumer\u0027 or \u0027PollingConsumer\u0027, depending on whether the component\u0027s input channel is a \u0027SubscribableChannel\u0027 or \u0027PollableChannel\u0027.","required":false},{"name":"phase","type":"number","description":"Flag to indicate the phase in which the component should start automatically on startup. See SmartLifecycle.","required":false},{"name":"auto-startup","type":"boolean","description":"Flag to indicate that the component should start automatically on startup (default true).","default":"true","required":false},{"name":"error-channel","type":"string","description":"If a downstream exception is thrown and an error-channel is specified, the MessagingException will be sent to this channel. Otherwise, any such exception will be logged.","required":false},{"name":"converter","type":"string","description":" A message converter to convert Spring Integration Message\u003cString\u003e to/from a paho MqttMessage. Default is DefaultMqttMessageConverter. ","required":false},{"name":"client-id","type":"string","description":"MQTT client ID.","required":true},{"name":"qos","type":"string","description":"Specifies the QoS to use when subscribing to topics; default \u00271\u0027. This can be single value (applying to all topics); otherwise it must be a comma-delimited list corresponding to the provided topics (the name number of elements must be provided).","required":false},{"name":"recovery-interval","type":"string","description":"The time in milliseconds to wait between reconnection attempts. Defaults to 10 seconds. ","default":"10000","required":false}]},{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.mqtt.outbound.MqttPahoMessageDrivenChannelAdapter\u0027 that sends messages to the MQTT topic.","attributes":[{"name":"retained-expression","type":"string","description":"Specifies an expression to evaluate to determine the message \u0027retained\u0027 flag. Default \"headers[\u0027mqtt_retained\u0027]\".","required":false},{"name":"channel","type":"string","description":" Channel from which messages will be output. When a message is sent to this channel it will cause the query to be executed. ","required":false},{"name":"url","type":"string","description":"MQTT broker URL.","required":false},{"name":"default-topic","type":"string","description":"Specifies the default topic to which messages will be sent. Required if the \u0027topic-expression\u0027 evaluates to \u0027null\u0027","required":false},{"name":"qos-expression","type":"string","description":"Specifies an expression to evaluate to determine the message qos. Default \"headers[\u0027mqtt_qos\u0027]\".","required":false},{"name":"default-qos","type":"string","description":"Specifies the default quality of service; used if the \u0027qos-expression\u0027 evaluates to \u0027null\u0027. Default 0.","required":false},{"name":"client-factory","type":"string","description":" An MqttClientFactory used to create clients and connection options if you wish to override the defaults. Default is DefaultMqttClientFactory. ","required":false},{"name":"async-events","type":"string","description":"When \u0027async\u0027 is true, specifies that message sent and message delivery events will be published for reception by a suitably configured \u0027ApplicationListener\u0027 or an event inbound-channel-adapter. Default: \u0027false\u0027.","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition, which is an instance of either \u0027EventDrivenConsumer\u0027 or \u0027PollingConsumer\u0027, depending on whether the component\u0027s input channel is a \u0027SubscribableChannel\u0027 or \u0027PollableChannel\u0027.","required":false},{"name":"phase","type":"number","description":"Flag to indicate the phase in which the component should start automatically on startup. See SmartLifecycle.","required":false},{"name":"auto-startup","type":"boolean","description":"Flag to indicate that the component should start automatically on startup (default true).","default":"true","required":false},{"name":"converter","type":"string","description":" A message converter to convert Spring Integration Message\u003cString\u003e to/from a paho MqttMessage. Default is DefaultMqttMessageConverter. ","required":false},{"name":"client-id","type":"string","description":"MQTT client ID.","required":true},{"name":"default-retained","type":"string","description":"Specifies the default value of the \u0027retained\u0027 flag; used if the \u0027retained-expression\u0027 evaluates to \u0027null\u0027. Default false.","required":false},{"name":"topic-expression","type":"string","description":"Specifies an expression to evaluate to determine the destination topic. Default \"headers[\u0027mqtt_topic\u0027]\".","required":false},{"name":"async","type":"string","description":"Specifies that sends should not block, with the thread returning immediately the message is sent. When \u0027true\u0027, message sent and message delivery events can be published; see \u0027async-events\u0027. Default: \u0027false\u0027.","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}}],"sftp":[{"role":"endpoint","connectionType":"source","name":"inbound-channel-adapter","description":"Configures a \u0027SourcePollingChannelAdapter\u0027 Endpoint for the \u0027org.springframework.integration.sftp.inbound.SftpInboundFileSynchronizingMessageSource\u0027 that synchronizes with a remote SFTP endpoint.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"preserve-timestamp","type":"string","description":"Specify whether to preserve the modified timestamp from the remote source file on the local file after copying. By default, the remote timestamp will NOT be preserved.","default":"false","required":false},{"name":"channel","type":"string","description":"Identifies channel attached to this adapter. The channel to which messages will be sent by this adapter.","required":false},{"name":"id","type":"string","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when downloading files. We change it right after we know it\u0027s downloaded.","required":false},{"name":"local-filter","type":"string","description":"Allows you to specify a reference to a [org.springframework.integration.file.filters.FileListFilter] bean. This filter is applied to files after they have been retrieved. The default is an AcceptOnceFileListFilter which means that, even if a new instance of a file is retrieved from the remote server, a message won\u0027t be generated. The filter provided here is combined with a filter that prevents the message source from processing files that are currently being downloaded.","required":false},{"name":"metadata-store-prefix","type":"string","description":"Specify a prefix for metadata store to distinguish keys from another places where the same shared store is used. By default, the remote a component name is used.","required":false},{"name":"max-fetch-size","type":"string","description":"When fetching objects from some external resource, limit the number of such objects that will be retrieved on each fetch. A negative value (default) indicates no limit; a value of zero effectively disables fetching remote objects.","required":false},{"name":"local-directory","type":"string","description":"Identifies the directory path (e.g., \"/local/mytransfers\") where files will be transferred TO.","required":true},{"name":"comparator","type":"string","description":"Specify a Comparator to be used when ordering Files. If none is provided, the order will be determined by the java.io.File implementation of Comparable.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"scanner","type":"string","description":"Reference to a custom DirectoryScanner implementation.","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false},{"name":"local-filename-generator-expression","type":"string","description":"Allows you to provide a SpEL expression to generate the file name of the local (transferred) file. The root object of the SpEL evaluation is the name of the original file. For example, a valid expression would be \"#this.toUpperCase() + \u0027.a\u0027\" where #this represents the original name of the remote file.","required":false},{"name":"auto-create-local-directory","type":"string","description":"Tells this adapter if the local directory must be auto-created if it doesn\u0027t exist. Default is TRUE.","required":false},{"name":"delete-remote-files","type":"string","description":"Specify whether to delete the remote source file after copying. By default, the remote files will NOT be deleted.","default":"false","required":false},{"name":"filename-pattern","type":"string","description":"Allows you to provide a file name pattern to determine the file names that need to be scanned. This is based on simple pattern matching (e.g., \"*.txt, fo*.txt\" etc.)","required":false},{"name":"remote-file-metadata-store","type":"string","description":"Reference to a MetadataStore for saving remote files information between synchronization and polling.","required":false},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"filter","type":"string","description":"Allows you to specify a reference to a [org.springframework.integration.file.filters.FileListFilter] bean. This filter is applied to files on the remote server and only files that pass the filter are retrieved.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"filename-regex","type":"string","description":"Allows you to provide a Regular Expression to determine the file names that need to be scanned. (e.g., \"f[o]+\\.txt\" etc.)","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with a [com.jcraft.jsch.ChannelSftp$LsEntry] generic type parameter.","required":true}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"request_reply","name":"outbound-gateway","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.sftp.gateway.SftpOutboundGateway used to issue SFTP commands.","attributes":[{"name":"requires-reply","type":"string","description":"Specify whether this outbound gateway must return a non-null value. This value is \u0027true\u0027 by default, and a ReplyRequiredException will be thrown when the underlying service returns a null value.","default":"true","required":false},{"name":"mput-regex","type":"string","description":"Allows you to provide Regular Expression to determine the file names sent by the \u0027mput\u0027 command (e.g., \"f[o]+\\.txt\" etc.) Only one of \u0027mput-filter\u0027, \u0027mput-pattern\u0027, or \u0027mput-regex\u0027 is allowed.","required":false},{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the remote target directory if it doesn\u0027t exist.","default":"false","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"mput-filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027mput-filter\u0027 attribute.","required":false},{"name":"id","type":"string","required":false},{"name":"mput-filter","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.filters.FileListFilter] bean. This filter acts on the local file system when using the \u0027mput\u0027 command. Only one of \u0027mput-filter\u0027, \u0027mput-pattern\u0027, or \u0027mput-regex\u0027 is allowed.","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when downloading files. We change it right after we know it\u0027s downloaded.","required":false},{"name":"command","type":"string","description":"sftp command.","required":false,"restriction":{"type":"enum","values":["ls","nlst","get","rm","mget","mv","put","mput"]}},{"name":"filename-pattern","type":"string","description":"Allows you to provide file name pattern to determine the file names retrieved by the \u0027ls\u0027 and \u0027mget\u0027 commands and is based on simple pattern matching algorithm (e.g., \"*.txt, fo*.txt\" etc.) Only one of \u0027filter\u0027, \u0027filename-pattern\u0027, or \u0027filename-regex\u0027 is allowed.","required":false},{"name":"expression","type":"string","description":"SpEL expression representing the path in the command (e.g. ls path to list the files in directory path).","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"command-options","type":"string","description":"sftp command options; for ls, -1 means just return the file names (otherwise file metadata is returned, -dirs means include directories (not included by default), -links means include links (not included by default); for get, -P means preserve timestamp from remote file.","required":false},{"name":"temporary-remote-directory","type":"string","description":"Identifies the remote temporary directory path (e.g., \"/remote/temp/mytransfers\")","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false},{"name":"local-filename-generator-expression","type":"string","description":"Allows you to provide a SpEL expression to generate the file name of the local (transferred) file. The root object of the SpEL evaluation is the request Message, but the name of the original remote file is also provided as the \u0027remoteFileName\u0027 variable. For example, a valid expression would be: \"#remoteFileName.toUpperCase() + headers.foo\". Only used with \u0027get\u0027 and \u0027mget\u0027 commands.","required":false},{"name":"auto-create-local-directory","type":"boolean","description":"Tells this adapter if local directory must be auto-created if it doesn\u0027\u0027t exist. Default is TRUE.","required":false},{"name":"request-channel","type":"string","description":"Identifies the request channel attached to this gateway.","required":false},{"name":"mput-pattern","type":"string","description":"Allows you to provide file name pattern to determine the file names sent by the \u0027mput\u0027 command and is based on simple pattern matching algorithm (e.g., \"*.txt, fo*.txt\" etc.) Only one of \u0027mput-filter\u0027, \u0027mput-pattern\u0027, or \u0027mput-regex\u0027 is allowed.","required":false},{"name":"remote-filename-generator","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.FileNameGenerator] bean.","required":false},{"name":"session-callback","type":"string","description":"The \u0027MessageSessionCallback\u0027 bean reference to perform custom operation(s) on \u0027Session\u0027 with \u0027requestMessage\u0027.","required":false},{"name":"local-directory-expression","type":"string","description":"Specifies SpEL expression to generate the directory path where file will be transferred TO, when using \u0027get\u0027 and \u0027mget\u0027 commands. The root object of the SpEL evaluation is the request Message, but the name of the source remote directory is also provided as the \u0027remoteDirectory\u0027 variable. For example, a valid expression might be: \"\u0027/local/\u0027 + #remoteDirectory.toUpperCase() + headers.foo\". Only used with \u0027get\u0027 and \u0027mget\u0027 commands. This attribute is mutually exclusive with \u0027local-directory\u0027.","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds.","required":false},{"name":"mode","type":"string","description":"This attribute defaults to \u0027REPLACE\u0027 if not set explicitly. The following options are available: APPEND: If append is specified, the data will be appended to the existing file if such file exists, otherwise the new file will be created as usual but, once created, the subsequent data will be appended to it. This attribute is mutually exclusive with the use of a temporary file, since append is done to the actual file and not its temporary counterpart. The file is closed after each write. If set to APPEND, the component will also use instance of the LockRegistry to ensure that there are no collisions when multiple threads are writing to the same file. APPEND_NO_FLUSH: Same as \u0027APPEND\u0027 but the data is not flushed or the file closed. This can significantly improve performance at the risk of lost data in the event of a failure. Various strategies are available for flushing the data and closing the file. Refer to the reference documentation for more information. FAIL: If the target file exists, a MessageHandlingException is thrown. IGNORE: If the target file exists, the message payload is silently ignored. REPLACE: This is the default behavior when writing files. If the target file already exists, it will be overwritten. REPLACE_IF_MODIFIED: If the local file already exists, it will be overwritten only if the last modified timestamp does not match the source timestamp. Only applies to local files.","required":false,"restriction":{"type":"enum","values":["REPLACE","REPLACE_IF_MODIFIED","APPEND","APPEND_NO_FLUSH","FAIL","IGNORE"]}},{"name":"filter","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.filters.FileListFilter] bean. This filter acts against the remote server view when using the \u0027ls\u0027 or \u0027mget\u0027 commands. Only one of \u0027filter\u0027, \u0027filename-pattern\u0027, or \u0027filename-regex\u0027 is allowed.","required":false},{"name":"reply-channel","type":"string","description":"Identifies the reply channel attached to this gateway.","required":false},{"name":"temporary-remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the temporary directory path to where files will be transferred before they are moved to the remote-directory (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/temp/myTransfers\u0027\");","required":false},{"name":"filename-regex","type":"string","description":"Allows you to provide Regular Expression to determine the file names retrieved by the \u0027ls\u0027 and \u0027mget\u0027 commands. (e.g., \"f[o]+\\.txt\" etc.) Only one of \u0027filter\u0027, \u0027filename-pattern\u0027, or \u0027filename-regex\u0027 is allowed.","required":false},{"name":"local-directory","type":"string","description":"Identifies directory path (e.g., \"/local/mytransfers\") where file will be transferred TO. This attribute is mutually exclusive with \u0027local-directory-expression\u0027.","required":false},{"name":"remote-filename-generator-expression","type":"string","description":"Allows you to provide SpEL expression which will compute file name of the remote file (e.g., assuming payload is java.io.File \"payload.getName() + \u0027.transferred\u0027\");","required":false},{"name":"chmod","type":"string","description":"Change the mode of the file (or remote file) after writing. Integer value expressed in Octal, e.g. \u0027644\u0027.","required":false},{"name":"rename-expression","type":"string","description":"SpEL expression representing the path for the new filename when using the \u0027mv\u0027 command. Defaults to \"headers.[\u0027file_renameTo\u0027]\".","required":false},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"use-temporary-file-name","type":"string","description":"Allows you to suppress using a temporary file name while writing the file.","default":"true","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"order","type":"string","description":"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, or when a failure in the delivery to one subscriber should signal that the message should not be sent to subscribers with a higher \u0027order\u0027 attribute. It has no effect when this endpoint itself is a Polling Consumer for a channel with a queue.","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with a [com.jcraft.jsch.ChannelSftp$LsEntry] generic type parameter.","required":true},{"name":"charset","type":"string","description":"Allows you to specify Charset (e.g., US-ASCII, ISO-8859-1, UTF-8). [UTF-8] is default - used when converting String payloads to bytes.","default":"UTF-8","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"sink","name":"outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.file.remote.handler.FileTransferringMessageHandler\u0027 for the \u0027SftpRemoteFileTemplate\u0027 that writes files to a remote SFTP endpoint.","attributes":[{"name":"remote-filename-generator","type":"string","description":"Allows you to specify a reference to [org.springframework.integration.file.FileNameGenerator] bean.","required":false},{"name":"auto-create-directory","type":"string","description":"Specify whether to automatically create the remote target directory if it doesn\u0027t exist.","default":"false","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"mode","type":"string","description":"This attribute defaults to \u0027REPLACE\u0027 if not set explicitly. The following options are available: APPEND: If append is specified, the data will be appended to the existing file if such file exists, otherwise the new file will be created as usual but, once created, the subsequent data will be appended to it. This attribute is mutually exclusive with the use of a temporary file, since append is done to the actual file and not its temporary counterpart. The file is closed after each write. If set to APPEND, the component will also use instance of the LockRegistry to ensure that there are no collisions when multiple threads are writing to the same file. APPEND_NO_FLUSH: Same as \u0027APPEND\u0027 but the data is not flushed or the file closed. This can significantly improve performance at the risk of lost data in the event of a failure. Various strategies are available for flushing the data and closing the file. Refer to the reference documentation for more information. FAIL: If the target file exists, a MessageHandlingException is thrown. IGNORE: If the target file exists, the message payload is silently ignored. REPLACE: This is the default behavior when writing files. If the target file already exists, it will be overwritten. REPLACE_IF_MODIFIED: If the local file already exists, it will be overwritten only if the last modified timestamp does not match the source timestamp. Only applies to local files.","required":false,"restriction":{"type":"enum","values":["REPLACE","REPLACE_IF_MODIFIED","APPEND","APPEND_NO_FLUSH","FAIL","IGNORE"]}},{"name":"id","type":"string","required":false},{"name":"temporary-remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the temporary directory path to where files will be transferred before they are moved to the remote-directory (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/temp/myTransfers\u0027\");","required":false},{"name":"remote-filename-generator-expression","type":"string","description":"Allows you to provide SpEL expression which will compute file name of the remote file (e.g., assuming payload is java.io.File \"payload.getName() + \u0027.transferred\u0027\");","required":false},{"name":"chmod","type":"string","description":"Change the mode of the file (or remote file) after writing. Integer value expressed in Octal, e.g. \u0027644\u0027.","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"temporary-file-suffix","type":"string","description":"Extension used when downloading files. We change it right after we know it\u0027s downloaded.","required":false},{"name":"use-temporary-file-name","type":"string","description":"Allows you to suppress using a temporary file name while writing the file.","default":"true","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"channel","type":"string","description":"Identifies channel attached to this adapter. This channel could be the receiving channel.","required":false},{"name":"order","type":"string","description":"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, or when a failure in the delivery to one subscriber should signal that the message should not be sent to subscribers with a higher \u0027order\u0027 attribute. It has no effect when this endpoint itself is a Polling Consumer for a channel with a queue.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with a [com.jcraft.jsch.ChannelSftp$LsEntry] generic type parameter.","required":true},{"name":"charset","type":"string","description":"Allows you to specify Charset (e.g., US-ASCII, ISO-8859-1, UTF-8). [UTF-8] is default - used when converting String payloads to bytes.","default":"UTF-8","required":false},{"name":"temporary-remote-directory","type":"string","description":"Identifies the remote temporary directory path (e.g., \"/remote/temp/mytransfers\")","required":false},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"source","name":"inbound-streaming-channel-adapter","description":"Configures a \u0027SourcePollingChannelAdapter\u0027 Endpoint for the \u0027org.springframework.integration.ftp.inbound.FtpInboundStreamingMessageSource\u0027.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"channel","type":"string","description":"Identifies channel attached to this adapter. The channel to which messages will be sent by this adapter.","required":false},{"name":"id","type":"string","required":false},{"name":"filename-pattern","type":"string","description":"Allows you to provide a file name pattern to determine the file names that need to be scanned. This is based on simple pattern matching (e.g., \"*.txt, fo*.txt\" etc.)","required":false},{"name":"comparator","type":"string","description":"Specify a Comparator to be used when ordering Files. If none is provided, the order in which files are processed is the order they are received from the SFTP server. The generic type of the Comparator must be \u0027SftpFileInfo\u0027.","required":false},{"name":"remote-file-separator","type":"string","description":"Allows you to provide remote file/directory separator character. DEFAULT: \u0027/\u0027","default":"/","required":false},{"name":"max-fetch-size","type":"string","description":"When fetching objects from some external resource, limit the number of such objects that will be retrieved on each fetch. A negative value (default) indicates no limit; a value of zero effectively disables fetching remote objects.","required":false},{"name":"filter","type":"string","description":"Allows you to specify a reference to a [org.springframework.integration.file.filters.FileListFilter] bean. This filter is applied to files on the remote server and only files that pass the filter are retrieved.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"filter-expression","type":"string","description":"The SpEL expression to evaluate against file to accept it for processing or not. Mutually exclusive with \u0027filter\u0027 attribute.","required":false},{"name":"remote-directory","type":"string","description":"Identifies the remote directory path (e.g., \"/remote/mytransfers\") Mutually exclusive with \u0027remote-directory-expression\u0027.","required":false},{"name":"filename-regex","type":"string","description":"Allows you to provide a Regular Expression to determine the file names that need to be scanned. (e.g., \"f[o]+\\.txt\" etc.)","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"session-factory","type":"string","description":"Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with a [com.jcraft.jsch.ChannelSftp$LsEntry] generic type parameter.","required":true},{"name":"remote-directory-expression","type":"string","description":"Specify a SpEL expression which will be used to evaluate the directory path to where the files will be transferred (e.g., \"headers.[\u0027remote_dir\u0027] + \u0027/myTransfers\u0027\" for outbound endpoints) There is no root object (message) for inbound endpoints (e.g., \"@someBean.fetchDirectory\");","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}}],"tcp-udp":[{"role":"endpoint","connectionType":"source","name":"udp-inbound-channel-adapter","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.ip.udp.UnicastReceivingChannelAdapter\u0027 for receiving incoming udp packets.","attributes":[{"name":"lookup-host","type":"string","description":"Whether or not to do a DNS reverse-lookup on the remote ip address to insert the host name into the message headers (ip_hostName). Default \"true\".","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"check-length","type":"string","required":false},{"name":"receive-buffer-size","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"multicast","type":"string","required":false},{"name":"channel","type":"string","required":false},{"name":"so-timeout","type":"string","required":false},{"name":"task-executor","type":"string","description":"Specifies a specific Executor to be used for socket handling. If not supplied, an internal pooled executor will be used (See pool-size). Needed on some platforms that require the use of specific task executors such as a WorkManagerTaskExecutor.","required":false},{"name":"error-channel","type":"string","description":"If a (synchronous) downstream exception is thrown and an \"error-channel\" is specified, the MessagingException will be sent to this channel. Otherwise, any such exception will simply be logged by the channel adapter.","required":false},{"name":"multicast-address","type":"string","required":false},{"name":"port","type":"string","required":false},{"name":"so-send-buffer-size","type":"string","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"so-receive-buffer-size","type":"string","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"local-address","type":"string","description":"On a multi-homed system, specifies the ip address of the network interface used to communicate. For inbound adapters and gateways, specifies the interface used to listen for incoming connections. If omitted, the endpoint will listen on all available adapters. For the UDP multicast outbound adapter specifies the interface to which multicast packets will be sent. For UDP unicast and multicast adapters, specifies which interface to which the acknowledgment socket will be bound. Does not apply to TCP outbound adapters and gateways.","required":false},{"name":"pool-size","type":"string","description":"The number of threads that will be used for socket/channel handling. Only applies if an external task-executor is NOT being used. When using an external task executor, its configuration specifies the number of threads.","required":false}]},{"role":"endpoint","connectionType":"request_reply","name":"tcp-outbound-gateway","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.ip.tcp.TcpOutboundGateway\u0027 for sending TCP packets and waiting for replies.","attributes":[{"name":"request-timeout","type":"string","description":"When using a shared socket, specifies the time the gateway will wait to get access to the socket to send the request.","required":false},{"name":"request-channel","type":"string","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"connection-factory","type":"string","description":"A connection factory is needed by an outbound adapter. The connection factory must be of \u0027client\u0027.","required":false},{"name":"close-stream-after-send","type":"string","description":"Close the output stream after sending the message; this signals EOF to the server while keeping the connection open to receive the reply. Requires \u0027single-use\u0027 set to \u0027true\u0027.","required":false},{"name":"id","type":"string","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds. Prior to 2.2, this attribute served the function of the remote-timeout attribute; it has been changed to make it consistent with other endpoints.","required":false},{"name":"reply-channel","type":"string","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"remote-timeout","type":"string","description":"Specifies the time the gateway will wait for a reply from the remote system. Prior to 2.2, this was specified with the reply-timeout attribute. To provide easier migration, this attribute defaults to the same value of the reply-timeout, if supplied, or 10 seconds otherwise. Mutually exclusive with \u0027remote-timeout-expression\u0027.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"remote-timeout-expression","type":"string","description":"Specifies an expresssion that is evaluated against the outbound message to determine the time the gateway will wait for a reply from the remote system. Mutually exclusive with \u0027remote-timeout\u0027.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"sink","name":"udp-outbound-channel-adapter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.ip.udp.UnicastSendingMessageHandler\u0027 to send UDP packets.","attributes":[{"name":"host","type":"string","required":false},{"name":"ack-host","type":"string","required":false},{"name":"check-length","type":"string","required":false},{"name":"ack-timeout","type":"string","required":false},{"name":"socket-expression","type":"string","description":"A SpEL expression to be evaluated to determine which datagram socket use for sending outgoing UDP packets (e.g. UDP inbound packet receiving Channel Adapter socket can be used).","required":false},{"name":"id","type":"string","required":false},{"name":"multicast","type":"string","required":false},{"name":"channel","type":"string","required":false},{"name":"so-timeout","type":"string","required":false},{"name":"min-acks-for-success","type":"string","required":false},{"name":"ack-port","type":"string","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"port","type":"string","required":false},{"name":"so-send-buffer-size","type":"string","required":false},{"name":"so-receive-buffer-size","type":"string","required":false},{"name":"task-executor","type":"string","description":"Specifies a specific Executor to be used for handling acknowledgments in the UDP adapter. If not supplied, an internal pooled executor will be used. Needed on some platforms that require the use of specific task executors such as a WorkManagerTaskExecutor.","required":false},{"name":"destination-expression","type":"string","description":"A SpEL expression to determine the destination address for the datagram packet at runtime. The \u0027requestMessage\u0027 is used as a root object for evaluation context. Must evaluate to \u0027URI\u0027, or \u0027String\u0027 in the URI style or \u0027SocketAddress\u0027. The \u0027IpHeaders.PACKET_ADDRESS\u0027 header from the received message throughout \u0027udp-inbound-channel-adapter\u0027 can be used with this expression as well. Mutually exclusive with \u0027host\u0027/\u0027port\u0027 pair.","required":false},{"name":"local-address","type":"string","description":"On a multi-homed system, specifies the ip address of the network interface used to communicate. For inbound adapters and gateways, specifies the interface used to listen for incoming connections. If omitted, the endpoint will listen on all available adapters. For the UDP multicast outbound adapter specifies the interface to which multicast packets will be sent. For UDP unicast and multicast adapters, specifies which interface to which the acknowledgment socket will be bound. Does not apply to TCP outbound adapters and gateways.","required":false},{"name":"time-to-live","type":"string","required":false},{"name":"acknowledge","type":"string","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"tcp-connection-factory","description":"Defines a \u0027org.springframework.integration.ip.tcp.connection.ConnectionFactory\u0027 implementation bean.","attributes":[{"name":"port","type":"string","description":"For client factories, the port to which a client connection factory will connect. For server factories, the port on which the factory will listen for incoming connections.","required":false},{"name":"so-linger","type":"string","required":false},{"name":"single-use","type":"string","description":"If true, a new connection will be created for each use. For inbound adapters where there is no outbound adapter sharing the factory, the connection will be closed after a message is received. For outbound adapters where there is no inbound adapter sharing the factory, or for inbound adapters where an outbound adapter shares the factory, the connection will be closed after so-timeout milliseconds. For outbound adapters where an inbound adapter shares the factory, the connection will be closed after a response is received.","required":false},{"name":"net-connection-support","type":"string","description":"A reference to a TcpNetConnectionSupport strategy implementation. When \u0027using-nio\u0027 is false, this is used to create connection objects.","required":false},{"name":"socket-factory-support","type":"string","description":"A reference to a TcpSocketFactorySupport strategy implementation. Allows customization of the factories used to create sockets. The default implementation returns default. ServerSocketFactory and SocketFactory instances, unless an \u0027ssl-context-support\u0027 attribute has been supplied, in which case the SSLContext obtained therefrom is used to create SSLServerSocketFactory and SSLSocketFactory instances.","required":false},{"name":"ssl-handshake-timeout","type":"string","description":"The timeout (in seconds) to use while performing handshakes on SSL sockets; only applies when \u0027using-nio\u0027 is \u0027true\u0027. Default: 30.","required":false},{"name":"backlog","type":"string","description":"Specifies the connection backlog for server sockets. Does not apply to client factories.","required":false},{"name":"id","type":"string","required":false},{"name":"so-timeout","type":"string","required":false},{"name":"so-traffic-class","type":"string","required":false},{"name":"lookup-host","type":"string","description":"Whether or not to do a DNS reverse-lookup on the remote ip address to insert the host name into the message headers (ip_connectionId, ip_hostName). Default \"true\".","required":false},{"name":"apply-sequence","type":"string","description":"When set to \"true\", adds sequenceNumber and correlationId headers to messages originating from connections created by this factory. Facilitates resequencing if necessary. Default \"false\".","default":"false","required":false},{"name":"so-keep-alive","type":"string","required":false},{"name":"read-delay","type":"string","description":"The delay (in milliseconds) before retrying a read after the previous attempt failed due to insufficient threads. Default 100. Only applies when \u0027using-nio\u0027 is true.","default":"100","required":false},{"name":"ssl-context-support","type":"string","description":"A reference to a TcpSSLContextSupport strategy implementation. Providing this reference enables SSL on connections created by this factory. A DefaultTcpSSLContextSupport implementation is provided that takes keystore and trustore names and passwords. The SSLContext created by this implementation is used to obtain socket factories (when using-nio\u003d\"false\") or SSLEngine instances (when using-nio\u003d\"true\"). When this attribute is omitted, normal plain text sockets are used.","required":false},{"name":"interceptor-factory-chain","type":"string","required":false},{"name":"local-address","type":"string","description":"On a multi-homed system, specifies the ip address of the network interface used to communicate. For inbound adapters and gateways, specifies the interface used to listen for incoming connections. If omitted, the endpoint will listen on all available adapters. For the UDP multicast outbound adapter specifies the interface to which multicast packets will be sent. For UDP unicast and multicast adapters, specifies which interface to which the acknowledgment socket will be bound. Does not apply to TCP outbound adapters and gateways.","required":false},{"name":"deserializer","type":"string","description":"A Deserializer that converts message payloads to/from output streams/input streams associated with the connection. Default is ByteArrayCrLfSerializer. Serializer and Deserializer would normally be the same but this is not required.","required":false},{"name":"nio-connection-support","type":"string","description":"A reference to a TcpNioConnectionSupport strategy implementation. When \u0027using-nio\u0027 is true, this is used to create connection objects. Two default implementations are provided \u0027DefaultTcpNioConnectionSupport\u0027 and \u0027DefaultTcpNioSSLConnectionSupport\u0027 depending on whether SSL is in use of not.","required":false},{"name":"connect-timeout","type":"string","description":"For client factories, the amount of time to wait for a connection to be established.","required":false},{"name":"so-tcp-no-delay","type":"string","required":false},{"name":"using-direct-buffers","type":"string","description":"If true, instructs the factory to use direct buffers if possible; only applies if using-nio is true. Refer to ByteBuffer javadocs for more information.","required":false},{"name":"task-executor","type":"string","description":"A task executor for managing connections; if not specified a cached thread pool task executor is used.","required":false},{"name":"serializer","type":"string","description":"A Serializer that converts message payloads to/from output streams/input streams associated with the connection. Default is ByteArrayCrLfSerializer. Serializer and Deserializer would normally be the same but this is not required.","required":false},{"name":"mapper","type":"string","description":"A reference to a TcpMessageMapper implementation. Allows customization of headers in inbound messages by overriding setCustomHeaders(). Default is TcpMessageMapper.","required":false},{"name":"using-nio","type":"string","description":"If true, the factory will use java.nio.channel.SocketChannel for communication; for a large number of connections on the server side, this can provide better performance and may use fewer threads.","default":"false","required":false},{"name":"type","type":"string","description":"Connection factories can be \u0027client\u0027 or \u0027server\u0027. Client factories open a connection to a server using a host and port. Server factories listen on a port and create a separate connection for each incoming connection request.","required":false,"restriction":{"type":"enum","values":["client","server"]}},{"name":"so-send-buffer-size","type":"string","required":false},{"name":"host","type":"string","description":"The host to which a client connection factory will connect.","required":false},{"name":"socket-support","type":"string","description":"A reference to a TcpSocketSupport strategy implementation. Allows post-processing Socket and ServerSocket instances after creation and after configured attributes are applied.","required":false},{"name":"so-receive-buffer-size","type":"string","required":false}]},{"role":"endpoint","connectionType":"inbound_request_reply","name":"tcp-inbound-gateway","description":"Defines a Messaging Gateway Endpoint for the \u0027org.springframework.integration.ip.tcp.TcpInboundGateway\u0027 for receiving incoming TCP packets and producing replies for them.","attributes":[{"name":"connection-factory","type":"string","description":"A connection factory is needed by an inbound adapter. The connection factory must be of type \u0027server\u0027.","required":false},{"name":"reply-timeout","type":"string","required":false},{"name":"client-mode","type":"string","description":"If set to true, causes the gateway to act as a client with respect to establishing the connection, rather than listening for incoming connections. Requires a type\u003d\"client\" connection factory, with single-use set to false. Defaults to false.","default":"false","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"retry-interval","type":"string","description":"When in client mode, specifies the retry interval, in milliseconds, if a connection cannot be established. Defaults to 60000.","default":"60000","required":false},{"name":"scheduler","type":"string","description":"When in client mode, provide a reference to the TaskScheduler instance to be used for establishing connections. If not provided, the default will use a thread pool of size 1.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"error-channel","type":"string","description":"If a (synchronous) downstream exception is thrown and an \"error-channel\" is specified, the MessagingException will be sent to this channel and the ultimate response of the error flow will be returned as a response by the gateway. If no \"error-channel\" is specified, any such exception will simply be logged by the gateway. In such a situation, no response is sent to the client.","required":false},{"name":"id","type":"string","required":false},{"name":"request-channel","type":"string","required":true},{"name":"reply-channel","type":"string","required":false}]},{"role":"endpoint","connectionType":"source","name":"tcp-inbound-channel-adapter","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.ip.tcp.TcpReceivingChannelAdapter\u0027 for receiving incoming tcp packets.","attributes":[{"name":"error-channel","type":"string","description":"If a (synchronous) downstream exception is thrown and an \"error-channel\" is specified, the MessagingException will be sent to this channel. Otherwise, any such exception will simply be logged by the channel adapter.","required":false},{"name":"connection-factory","type":"string","description":"A connection factory is needed by an inbound adapter. If the connection factory has a type \u0027server\u0027, the factory is \u0027owned\u0027 by this adapter. If it has a type \u0027client\u0027, it is owned by an outbound channel adapter and this adapter will receive any incoming messages on the connection created by the outbound adapter.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"retry-interval","type":"string","description":"When in client mode, specifies the retry interval, in milliseconds, if a connection cannot be established. Defaults to 60000.","default":"60000","required":false},{"name":"scheduler","type":"string","description":"When in client mode, provide a reference to the TaskScheduler instance to be used for establishing connections. If not provided, the default will use a thread pool of size 1.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"client-mode","type":"string","description":"If set to true, causes the adapter to act as a client with respect to establishing the connection, rather than listening for incoming connections. Requires a type\u003d\"client\" connection factory, with single-use set to false. Defaults to false.","default":"false","required":false},{"name":"channel","type":"string","required":false}]},{"role":"endpoint","connectionType":"sink","name":"tcp-outbound-channel-adapter","description":"Defines a Message Producing Endpoint for the \u0027org.springframework.integration.ip.tcp.TcpSendingMessageHandler\u0027 for sending TCP packets.","attributes":[{"name":"client-mode","type":"string","description":"If set to true, causes the adapter to establish a connection when started, rather than when the first message is sent. Requires a type\u003d\"client\" connection factory, with single-use set to false. Defaults to false.","default":"false","required":false},{"name":"order","type":"string","description":"Specifies the order for invocation when this endpoint is connected as a subscriber to a SubscribableChannel.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"retry-interval","type":"string","description":"When in client mode, specifies the retry interval, in milliseconds, if a connection cannot be established. Defaults to 60000.","default":"60000","required":false},{"name":"scheduler","type":"string","description":"When in client mode, provide a reference to the TaskScheduler instance to be used for establishing connections. If not provided, the default will use a thread pool of size 1.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"connection-factory","type":"string","description":"A connection factory is needed by an outbound adapter. If the connection factory has a type \u0027client\u0027, the factory is \u0027owned\u0027 by this adapter. If it has a type \u0027server\u0027, it is owned by an inbound channel adapter and this adapter will attempt to correlate messages to the connection on which an original inbound message was received.","required":false},{"name":"channel","type":"string","required":false}],"childGroup":{"indicator":"all","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}}],"web-services":[{"role":"endpoint","connectionType":"passthru","name":"header-enricher","description":"Defines a \u0027org.springframework.integration.transformer.HeaderEnricher\u0027 for adding a SOAP Action value.","attributes":[{"name":"output-channel","type":"string","required":false},{"name":"input-channel","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"default-overwrite","type":"boolean","description":"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 \u0027overwrite\u0027 attribute. If the \u0027default-overwrite\u0027 attribute is not provided, then the specified header values will NOT overwrite any existing ones with the same header names.","required":false}],"childGroup":{"indicator":"choice","occurrence":{"max":2},"children":[{"name":"soap-action","attributes":[{"name":"expression","type":"string","required":false},{"name":"value","type":"string","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name.","required":false},{"name":"ref","type":"string","required":false}]},{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}}]}},{"role":"endpoint","connectionType":"request_reply","name":"outbound-gateway","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.ws.AbstractWebServiceOutboundGateway\u0027 implementation that sends SOAP requests and expects responses.","attributes":[{"name":"unmarshaller","type":"string","description":"Reference to a Spring OXM Unmarshaller.","required":false},{"name":"mapped-reply-headers","type":"string","description":"Comma-separated list of names of MessageHeaders to be mapped into the SOAP Headers of the SOAP reply. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\").","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"source-extractor","type":"string","description":"Reference to a Spring Web Services SourceExtractor.","required":false},{"name":"extract-payload","type":"boolean","description":"Set to \u0027true\u0027 to extract the WebServiceMessage payload. Otherwise the whole WebServiceMessage is used as the integration message payload. This option is only applied for the simple gateway.","required":false},{"name":"interceptor","type":"string","description":"Reference to the bean definition of a ClientInterceptor.","required":false},{"name":"fault-message-resolver","type":"string","required":false},{"name":"message-sender","type":"string","description":"Reference to the bean definition of a WebServiceMessageSender.","required":false},{"name":"request-channel","type":"string","description":"The channel where Messages should be sent to invoke the Web Service.","required":false},{"name":"marshaller","type":"string","description":"Reference to a Spring OXM Marshaller. If the Marshaller instance also implements the Unmarshaller interface, then the \u0027unmarshaller\u0027 attribute is not required.","required":false},{"name":"mapped-request-headers","type":"string","description":"Comma-separated list of names of SOAP Headers to be mapped from the SOAP request into the MessageHeaders. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\").","required":false},{"name":"header-mapper","type":"string","description":"Reference to a SoapHeaderMapper implementation that this gateway will use to map between Spring Integration MessageHeaders and the SoapHeader.","required":false},{"name":"id","type":"string","description":"A unique identifier for this Gateway.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"web-service-template","type":"string","description":"Reference to a WebServiceTemplate instance. The WebServiceTemplate-specific options like \u0027message-sender(s)\u0027, \u0027interceptor(s)\u0027, \u0027fault-message-resolver\u0027 and \u0027message-factory\u0027 must be declared on that instance.","required":false},{"name":"reply-channel","type":"string","description":"The channel where Messages created from the Web Service responses will be sent. This is optional. However, if non-empty responses are expected and this is not set, then the request Messages must contain a REPLY_CHANNEL header.","required":false},{"name":"destination-provider","type":"string","description":"Reference to a DestinationProvider implementation. Either provide this or a \u0027uri\u0027, never both. See org.springframework.ws.client.support.destination.DestinationProvider for more detail.","required":false},{"name":"request-callback","type":"string","description":"Reference to a Spring Web Services WebServiceMessageCallback. This enables changing the Web Service request message after the payload has been written to it but prior to invocation of the actual Web Service.","required":false},{"name":"reply-timeout","type":"string","description":"Allows you to specify how long this gateway will wait for the reply message to be sent successfully to the reply channel before throwing an exception. This attribute only applies when the channel might block, for example when using a bounded queue channel that is currently full. Also, keep in mind that when sending to a DirectChannel, the invocation will occur in the sender\u0027s thread. Therefore, the failing of the send operation may be caused by other components further downstream. The \"reply-timeout\" attribute maps to the \"sendTimeout\" property of the underlying \u0027MessagingTemplate\u0027 instance (org.springframework.integration.core.MessagingTemplate). The attribute will default, if not specified, to \u0027-1\u0027, meaning that by default, the Gateway will wait indefinitely. The value is specified in milliseconds.","required":false},{"name":"message-senders","type":"string","description":"Reference to the bean definition for a list or array of WebServiceMessageSenders.","required":false},{"name":"interceptors","type":"string","description":"Reference to the bean definition for a list or array of ClientInterceptors.","required":false},{"name":"encode-uri","type":"boolean","description":"When set to \"false\", the URI won\u0027t be encoded before the request is sent. This may be useful in some scenarios as it allows user control over the encoding, if needed. Default is \"true\". This attribute is ignored, if \u0027destination-provider\u0027 is specified.","default":"true","required":false},{"name":"requires-reply","type":"string","description":"Specify whether this outbound gateway must return a non-null value. This value is \u0027false\u0027 by default, otherwise a ReplyRequiredException will be thrown when the underlying service returns a null value, or an empty String (if \u0027ignore-empty-responses\u0027 is \u0027true\u0027).","default":"false","required":false},{"name":"order","type":"string","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"ignore-empty-responses","type":"string","description":"Indicates whether empty String response payloads should be considered as null. The default is TRUE. See also \u0027requires-reply\u0027. Note that when \u0027requires-reply\u0027 is \u0027true\u0027 the response is not actually \u0027ignored\u0027, because it will cause a ReplyRequiredException to be thrown. Set this to FALSE if you want to send empty String responses in reply Messages.","required":false},{"name":"uri","type":"string","description":"The Destination URI for this Web Service Gateway. If the URI should be determined at runtime (e.g. registry lookup), then configure a \u0027destination-provider\u0027 reference instead. Alternatively, this URI may include {placeholders} whose values are determined by evaluating SpEL expressions provided via \u0027uri-variable\u0027 sub-elements. The root object for those evaluations is the actual request Message at runtime, i.e. you can access its payload or headers in the expression.","required":false},{"name":"message-factory","type":"string","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0,"max":-1},"name":"uri-variable","description":"Expression to be evaluated against the Message to replace a URI {placeholder} with the evaluation result.","attributes":[{"name":"expression","type":"string","description":"Expression to be evaluated to determine the replacement value. The Message is the root object of the expression, therefore the \u0027payload\u0027 and \u0027headers\u0027 are available directly. Any bean may be resolved if the bean name is preceded with \u0027@\u0027.","required":true},{"name":"name","type":"string","description":"Name of the placeholder to be replaced.","required":true}]},{"occurrence":{"min":0},"name":"transactional","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"inbound_request_reply","name":"inbound-gateway","description":"Configures a Messaging Gateway Endpoint for the \u0027org.springframework.integration.ws.AbstractWebServiceInboundGateway\u0027 implementation that receives SOAP requests and produce responses.","attributes":[{"name":"unmarshaller","type":"string","required":false},{"name":"error-channel","type":"string","description":"If a (synchronous) downstream exception is thrown and an error-channel is specified, the MessagingException will be sent to this channel.","required":false},{"name":"mapped-reply-headers","type":"string","description":"Comma-separated list of names of MessageHeaders to be mapped into the SOAP Headers of the SOAP reply. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\").","required":false},{"name":"request-channel","type":"string","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"extract-payload","type":"boolean","description":"Set to \u0027true\u0027 to extract the WebServiceMessage payload. Otherwise the whole WebServiceMessage is used as the integration message payload. This option is only applied for the simple gateway.","required":false},{"name":"marshaller","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"reply-channel","type":"string","required":false},{"name":"reply-timeout","type":"string","description":"Maximum time in milliseconds to wait for a reply from the downstream message flow initiated by this gateway. This attribute is only relevant if at least some part of the downstream flow is asynchronous.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"mapped-request-headers","type":"string","description":"Comma-separated list of names of SOAP Headers to be mapped from the SOAP request into the MessageHeaders. This can only be provided if the \u0027header-mapper\u0027 reference is not being set directly. The values in this list can also be simple patterns to be matched against the header names (e.g. \"foo*\" or \"*foo\").","required":false},{"name":"header-mapper","type":"string","description":"Reference to a SoapHeaderMapper implementation that this gateway will use to map between Spring Integration MessageHeaders and the SoapHeader.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}]}],"xml":[{"role":"router","connectionType":"content_based_router","name":"xpath-router","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.xml.router.XPathRouter\u0027 which allows for the routing of messages using XPath expressions. This Message Endpoint has no output channel. Instead, one or more output channels are determined dynamically using the provided XPath Expression.","attributes":[{"name":"xpath-expression-ref","type":"string","description":"Reference to the XPathExpression instance to be evaluated against the input Message\u0027s payload. Either this or \u0027xpath-expression\u0027 must be provided, but not both.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"ignore-send-failures","type":"boolean","description":"If set to \"true\", failures to send to a message channel will be ignored. If set to \"false\", a MessageDeliveryException will be thrown instead, and if the router resolves more than one channel, any subsequent channels will not receive the message. Please be aware that when using direct channels (single threaded), send-failures can be caused by exceptions thrown by components much further down-stream. This attribute defaults to false.","required":false},{"name":"converter","type":"string","description":"Specify the Converter to use when converting payloads prior to XPath evaluation. The DefaultXmlPayloadConverter is used if this reference is not provided, and it should be sufficient in most cases since it can convert from Node, Document, Source, File, and String typed payloads. If you need to extend beyond the capabilities of that default implementation, then an upstream Transformer is probably a better option than providing a reference to a custom implementation of this strategy here.","required":false},{"name":"id","type":"string","description":"Identifies the underlying Spring bean definition which in case of Routers is an instance of EventDrivenConsumer or PollingConsumer depending on whether the Router\u0027s \"input-channel\" is a \"SubscribableChannel\" or \"PollableChannel\", respectively. This is an \"optional\" attribute.","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending Messages to the target MessageChannels if blocking is possible (e.g. a bounded queue channel that is currently full). By default the send will block indefinitely. Synonym for \u0027timeout\u0027 - only one can be supplied.","required":false},{"name":"apply-sequence","type":"boolean","description":"Specify whether sequence number and size headers should be added to each Message. Defaults to false.","required":false},{"name":"evaluate-as-string","type":"boolean","description":"By default XPath expressions are evaluated as NODESET type and then converted to a List of channel names, thus handling single channel scenarios as well as multiple. However certain XPath expressions may evaluate to String type results from the very beginning (e.g., \u0027name(./node())\u0027 - which will return the name of the root node) thus resulting in an exception if the default evaluation type (NODESET) is used. This flag will allow you to manage the evaluation type. It is \u0027false\u0027 by default, however if set to \u0027true\u0027, then the String evaluation type will be used.","default":"false","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"default-output-channel","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"resolution-required","type":"boolean","description":"Specify whether channel names must always be successfully resolved to existing channel instances. If set to \u0027true\u0027, a MessagingException will be raised in case the channel cannot be resolved. Setting this attribute to \u0027false\u0027, will cause any unresolvable channels to be ignored. If not explicitly set, \u0027resolution-required\u0027 will default to \u0027true\u0027.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"xpath-expression","description":"Defines an XPath expression - \u0027org.springframework.xml.xpath.XPathExpressionFactory\u0027 with the \u0027createXPathExpression()\u0027 factory-method. Internally XPath expressions will be evaluated as NODESET type and converted to a List\u003cString\u003e representing channel names. Typically such a list will contain a single channel name. However, based on the result of an XPath Expression the XPath router can also take on the characteristics of the Recipient List Router if the XPath Expression returns more than one value, thus resulting in the List\u003cString\u003e containing more than one channel name. In that case the Message will be sent to all channels in the list.","attributes":[{"name":"namespace-map","type":"string","required":false},{"name":"expression","type":"string","required":true},{"name":"id","type":"string","required":false},{"name":"ns-uri","type":"string","required":false},{"name":"ns-prefix","type":"string","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"map","description":"A mapping from a key to an object. Maps may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"key-type","type":"string","description":"The default Java type for nested entry keys. Must be a fully qualified class name.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"description","description":"Contains informative text describing the purpose of the enclosing element. Used primarily for user documentation of XML bean definition documents.","childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[]}},{"occurrence":{"min":0,"max":-1},"name":"entry","description":"A map entry can be an inner bean, ref, value, or collection. The key of the entry is given by the \"key\" attribute or child element.","attributes":[{"name":"value","type":"string","description":"A short-cut alternative to a nested \"\u003cvalue\u003e...\u003c/value\u003e\" element.","required":false},{"name":"key-ref","type":"string","description":"A short-cut alternative to a to a \"key\" element with a nested \"\u003cref bean\u003d\u0027...\u0027/\u003e\".","required":false},{"name":"value-ref","type":"string","description":"A short-cut alternative to a nested \"\u003cref bean\u003d\u0027...\u0027/\u003e\".","required":false},{"name":"value-type","type":"string","description":"A short-cut alternative to a \u0027type\u0027 attribute on a nested \"\u003cvalue type\u003d\u0027...\u0027 \u003e...\u003c/value\u003e\" element.","required":false},{"name":"key","type":"string","description":"Each map element must specify its key as attribute or as child element. A key attribute is always a String value.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"key","description":"A key element can contain an inner bean, ref, value, or collection."},{"occurrence":{"min":0},"name":"description","description":"Contains informative text describing the purpose of the enclosing element. Used primarily for user documentation of XML bean definition documents."},{"occurrence":{"min":0,"max":-1},"name":"bean","description":"Defines a single (usually named) bean. A bean definition may contain nested tags for constructor arguments, property values, lookup methods, and replaced methods. Mixing constructor injection and setter injection on the same bean is explicitly supported.","attributes":[{"name":"depends-on","type":"string","description":"The names of the beans that this bean depends on being initialized. The bean factory will guarantee that these beans get initialized before this bean. Note that dependencies are normally expressed through bean properties or constructor arguments. This property should just be necessary for other kinds of dependencies like statics (*ugh*) or database preparation on startup. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition.","required":false},{"name":"id","type":"string","description":"The unique identifier for a bean. A bean id may not be used more than once within the same \u003cbeans\u003e element.","required":false},{"name":"factory-bean","type":"string","description":"Alternative to class attribute for factory-method usage. If this is specified, no class attribute should be used. This must be set to the name of a bean in the current or ancestor factories that contains the relevant factory method. This allows the factory itself to be configured using Dependency Injection, and an instance (rather than static) method to be used.","required":false},{"name":"factory-method","type":"string","description":"The name of a factory method to use to create this object. Use constructor-arg elements to specify arguments to the factory method, if it takes arguments. Autowiring does not apply to factory methods. If the \"class\" attribute is present, the factory method will be a static method on the class specified by the \"class\" attribute on this bean definition. Often this will be the same class as that of the constructed object - for example, when the factory method is used as an alternative to a constructor. However, it may be on a different class. In that case, the created object will *not* be of the class specified in the \"class\" attribute. This is analogous to FactoryBean behavior. If the \"factory-bean\" attribute is present, the \"class\" attribute is not used, and the factory method will be an instance method on the object returned from a getBean call with the specified bean name. The factory bean may be defined as a singleton or a prototype. The factory method can have any number of arguments. Autowiring is not supported. Use indexed constructor-arg elements in conjunction with the factory-method attribute. Setter Injection can be used in conjunction with a factory method. Method Injection cannot, as the factory method returns an instance, which will be used when the container creates the bean.","required":false},{"name":"parent","type":"string","description":"The name of the parent bean definition. Will use the bean class of the parent if none is specified, but can also override it. In the latter case, the child bean class must be compatible with the parent, i.e. accept the parent\u0027s property values and constructor argument values, if any. A child bean definition will inherit constructor argument values, property values and method overrides from the parent, with the option to add new values. If init method, destroy method, factory bean and/or factory method are specified, they will override the corresponding parent settings. The remaining settings will always be taken from the child definition: depends on, autowire mode, scope, lazy init.","required":false},{"name":"lazy-init","type":"string","description":"Indicates whether this bean is to be lazily initialized. If \"false\", it will be instantiated on startup by bean factories that perform eager initialization of singletons. The effective default is \"false\". Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition. It can be shared through the \u0027default-lazy-init\u0027 attribute at the \u0027beans\u0027 level and potentially inherited from outer \u0027beans\u0027 defaults in case of nested \u0027beans\u0027 sections (e.g. with different profiles).","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"init-method","type":"string","description":"The name of the custom initialization method to invoke after setting bean properties. The method must have no arguments, but may throw any exception. This is an alternative to implementing Spring\u0027s InitializingBean interface or marking a method with the PostConstruct annotation.","required":false},{"name":"primary","type":"boolean","description":"Specifies that this bean should be given preference when multiple candidates are qualified to autowire a single-valued dependency. If exactly one \u0027primary\u0027 bean exists among the candidates, it will be the autowired value.","required":false},{"name":"name","type":"string","description":"Can be used to create one or more aliases illegal in an (XML) id. Multiple aliases can be separated by any number of spaces, commas, or semi-colons (or indeed any mixture of the three).","required":false},{"name":"autowire","type":"string","description":"Controls whether bean properties are \"autowired\". This is an automagical process in which bean references don\u0027t need to be coded explicitly in the XML bean definition file, but rather the Spring container works out dependencies. The effective default is \"no\". There are 4 modes: 1. \"no\" The traditional Spring default. No automagical wiring. Bean references must be defined in the XML file via the \u003cref/\u003e element (or \"ref\" attribute). We recommend this in most cases as it makes documentation more explicit. Note that this default mode also allows for annotation-driven autowiring, if activated. \"no\" refers to externally driven autowiring only, not affecting any autowiring demands that the bean class itself expresses. 2. \"byName\" Autowiring by property name. If a bean of class Cat exposes a \"dog\" property, Spring will try to set this to the value of the bean \"dog\" in the current container. If there is no matching bean by name, nothing special happens. 3. \"byType\" Autowiring if there is exactly one bean of the property type in the container. If there is more than one, a fatal error is raised, and you cannot use byType autowiring for that bean. If there is none, nothing special happens. 4. \"constructor\" Analogous to \"byType\" for constructor arguments. If there is not exactly one bean of the constructor argument type in the bean factory, a fatal error is raised. Note that explicit dependencies, i.e. \"property\" and \"constructor-arg\" elements, always override autowiring. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition. It can be shared through the \u0027default-autowire\u0027 attribute at the \u0027beans\u0027 level and potentially inherited from outer \u0027beans\u0027 defaults in case of nested \u0027beans\u0027 sections (e.g. with different profiles).","default":"default","required":false,"restriction":{"type":"enum","values":["default","no","byName","byType","constructor"]}},{"name":"abstract","type":"boolean","description":"Is this bean \"abstract\", that is, not meant to be instantiated itself but rather just serving as parent for concrete child bean definitions? The default is \"false\". Specify \"true\" to tell the bean factory to not try to instantiate that particular bean in any case. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per abstract bean definition.","required":false},{"name":"destroy-method","type":"string","description":"The name of the custom destroy method to invoke on bean factory shutdown. The method must have no arguments, but may throw any exception. This is an alternative to implementing Spring\u0027s DisposableBean interface or the standard Java Closeable/AutoCloseable interface, or marking a method with the PreDestroy annotation. Note: Only invoked on beans whose lifecycle is under the full control of the factory - which is always the case for singletons, but not guaranteed for any other scope.","required":false},{"name":"scope","type":"string","description":"The scope of this bean: typically \"singleton\" (one shared instance, which will be returned by all calls to getBean with the given id), or \"prototype\" (independent instance resulting from each call to getBean). By default, a bean will be a singleton, unless the bean has a parent bean definition in which case it will inherit the parent\u0027s scope. Singletons are most commonly used, and are ideal for multi-threaded service objects. Further scopes, such as \"request\" or \"session\", might be supported by extended bean factories (e.g. in a web environment). Inner bean definitions inherit the scope of their containing bean definition, unless explicitly specified: The inner bean will be a singleton if the containing bean is a singleton, and a prototype if the containing bean is a prototype, etc.","required":false},{"name":"autowire-candidate","type":"string","description":"Indicates whether or not this bean should be considered when looking for matching candidates to satisfy another bean\u0027s autowiring requirements. Note that this does not affect explicit references by name, which will get resolved even if the specified bean is not marked as an autowire candidate.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"class","type":"string","description":"The fully qualified name of the bean\u0027s class, except if it serves only as a parent definition for child bean definitions.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Defines a reference to another bean in this factory or an external factory (parent or included factory).","attributes":[{"name":"parent","type":"string","description":"The name of the referenced bean in a parent factory.","required":false},{"name":"bean","type":"string","description":"The name of the referenced bean.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"idref","description":"The id of another bean in this factory or an external factory (parent or included factory). While a regular \u0027value\u0027 element could instead be used for the same effect, using idref indicates that the Spring container should check that the value actually corresponds to a bean id.","attributes":[{"name":"bean","type":"string","description":"The name of the referenced bean.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"value","description":"Contains a string representation of a property value. The property may be a string, or may be converted to the required type using the JavaBeans PropertyEditor machinery. This makes it possible for application developers to write custom PropertyEditor implementations that can convert strings to arbitrary target objects. Note that this is recommended for simple objects only. Configure more complex objects by populating JavaBean properties with references to other beans.","attributes":[{"name":"type","type":"string","description":"The exact type that the value should be converted to. Only needed if the type of the target property or constructor argument is too generic: for example, in case of a collection element.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"null","description":"Denotes a Java null value. Necessary because an empty \"value\" tag will resolve to an empty String, which will not be resolved to a null value unless a special PropertyEditor does so."},{"occurrence":{"min":0,"max":-1},"name":"array","description":"An array can contain multiple inner bean, ref, collection, or value elements. This configuration element will always result in an array, even when being defined e.g. as a value for a map with value type Object.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"list","description":"A list can contain multiple inner bean, ref, collection, or value elements. A list can also map to an array type; the necessary conversion is performed automatically.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"set","description":"A set can contain multiple inner bean, ref, collection, or value elements.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"map","description":"A mapping from a key to an object. Maps may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"key-type","type":"string","description":"The default Java type for nested entry keys. Must be a fully qualified class name.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"props","description":"Props elements differ from map elements in that values must be strings. Props may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]}]}}]}}]}},{"occurrence":{"min":0,"max":-1},"name":"mapping","description":"If the values returned by the XPath Expression do not represent the channel names themselves, additional mappings can be specified using the \"mapping\" sub-element. For example if the \u0027/request/responders\u0027 expression results in two values: \u0027responderA\u0027 and \u0027responderB\u0027, but you don\u0027t want to couple the responder names to channel names you may provide additional mappings such as: \u003cint-xml:mapping value\u003d\"responderA\" channel\u003d\"channelA\"/\u003e \u003cint-xml:mapping value\u003d\"responderB\" channel\u003d\"channelB\"/\u003e ","attributes":[{"name":"channel","type":"string","description":"A reference to a bean that defines a Message Channel (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","required":false},{"name":"value","type":"string","description":"A value of the evaluation token that will be mapped to a channel reference (e.g., mapping value\u003d\u0027foo\u0027 channel\u003d\u0027myChannel\u0027)","required":false}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"xpath-transformer","description":"Defines an XPath (\u0027org.springframework.integration.xml.transformer.XPathTransformer\u0027) transformer.","attributes":[{"name":"xpath-expression-ref","type":"string","description":"Reference to the XPathExpression instance to be evaluated against the input Message\u0027s payload. Either this or \u0027xpath-expression\u0027 must be provided, but not both.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"node-mapper","type":"string","description":"Reference to a NodeMapper. If this is provided, the \u0027evaluation-type\u0027 will be ignored. Instead, the org.springframework.xml.xpath.XPathExpression\u0027s evaluateAsObject(Node node, NodeMapper nodeMapper) method will be invoked.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"xpath-expression","type":"string","description":"The XPath expression string to be evaluated against the input Message\u0027s payload. Either this or \u0027xpath-expression-ref\u0027 must be provided, but not both.","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"evaluation-type","type":"string","description":"The result type expected from the XPath evaluation. This will be the payload type of the output Message.","default":"STRING_RESULT","required":false,"restriction":{"type":"enum","values":["BOOLEAN_RESULT","STRING_RESULT","NUMBER_RESULT","NODE_RESULT","NODE_LIST_RESULT"]}},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"converter","type":"string","description":"Specify the XmlPayloadConverter to use when converting a Message payload prior to XPath evaluation. The DefaultXmlPayloadConverter is used if this reference is not provided, and it should be sufficient in most cases since it can convert from Node, Document, Source, File, and String typed payloads. If you need to extend beyond the capabilities of that default implementation, then an upstream Transformer is probably a better option than providing a reference to a custom implementation of this strategy here.","required":false}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"xslt-transformer","description":"Defines an XSLT (\u0027org.springframework.integration.xml.transformer.XsltPayloadTransformer\u0027) transformer.","attributes":[{"name":"xsl-templates","type":"string","description":"Reference to a Templates instance. Either this attribute or the \u0027xsl-resource\u0027 attribute MUST be specified.","required":false},{"name":"result-type","type":"string","description":"This attribute can be used to control the type of result created. If this attribute is provided, you must not specify the \u0027result-factory\u0027 attribute. If neither this property nor the \u0027result-factory\u0027 attribute are provided, \u0027DomResult\u0027 will be used.","required":false,"restriction":{"type":"enum","values":["DOMResult","StringResult"]}},{"name":"result-factory","type":"string","description":"Reference to a custom implementation of \u0027ResultFactory\u0027. If this attribute is provided, you must not specify the \u0027result-type\u0027 attribute.","required":false},{"name":"xslt-param-headers","type":"string","description":"If message header names match 1:1 to parameter names, you can use this attribute to make the parameters available. The use of wildcards for simple pattern matching is also possible. It supports the following simple pattern styles: \u0027xxx*\u0027, \u0027*xxx\u0027, \u0027*xxx*\u0027 and \u0027xxx*yyy\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"transformer-factory-class","type":"string","description":"A fully qualified class name to a transformer factory class that overrides the current JVM default.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"xsl-resource","type":"string","description":"Allows you to specify a org.springframework.core.io.Resource, which will be used to create the javax.xml.transform.Templates instance. Either this attribute or the \u0027xsl-templates\u0027 attribute MUST be specified.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"result-transformer","type":"string","description":"If the XSLT transformation returns a \u0027Result\u0027 object, than you have the option to specify a reference to a \u0027ResultTransformer\u0027 instance. This allows you to transform the \u0027Result\u0027 into another format. By default 2 implementations are available: - \u0027ResultToDocumentTransformer\u0027 and - \u0027ResultToStringTransformer\u0027","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"source-factory","type":"string","description":"Reference to a \u0027SourceFactory\u0027 instance. Allows for the custom conversion to a javax.xml.transform.Source If not set, this property will internally default to \u0027DomSourceFactory\u0027.","required":false}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0,"max":-1},"name":"xslt-param","description":"Allows to configure individual Xslt parameters. There the \u0027expression\u0027 and \u0027value\u0027 attribute are available. The expression attribute should be any valid SpEL expression with the message being the root object of the expression evaluation context. The value attribute, just like any value in Spring beans, allows you to specify simple static values. You can also use property placeholders (e.g., ${some.value}).","attributes":[{"name":"expression","type":"string","required":false},{"name":"value","type":"string","required":false},{"name":"name","type":"string","required":true}]},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"xpath-header-enricher","description":"Defines an \u0027org.springframework.integration.xml.transformer.XPathHeaderEnricher\u0027 that evaluates XPath expressions against the message payload and inserts the result of the evaluation into a message header.","attributes":[{"name":"should-skip-nulls","type":"boolean","description":"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.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"converter","type":"string","description":"Specify the XmlPayloadConverter to use when converting a Message payload prior to XPath evaluation. The DefaultXmlPayloadConverter is used if this reference is not provided, and it should be sufficient in most cases since it can convert from Node, Document, Source, File, and String typed payloads.","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"default-overwrite","type":"boolean","description":"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 \u0027overwrite\u0027 attribute. If the \u0027default-overwrite\u0027 attribute is not provided, then the specified header values will NOT overwrite any existing ones with the same header names.","required":false}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"max":-1},"name":"header","description":"Defines an XPath expression to be configured within an \u003cxpath-header-enricher/\u003e element.","attributes":[{"name":"header-type","type":"string","description":"The fully qualified class name of the header value\u0027s expected type.","required":false},{"name":"xpath-expression-ref","type":"string","description":"The XPath Expression reference. Either this or \u0027xpath-expression\u0027 must be provided, but not both.","required":false},{"name":"name","type":"string","description":"The name of the header to be enriched.","required":true},{"name":"xpath-expression","type":"string","description":"The XPath Expression as a String. Either this or \u0027xpath-expression-ref\u0027 must be provided, but not both.","required":false},{"name":"overwrite","type":"boolean","description":"Boolean value to indicate whether this header value should overwrite an existing header value for the same name if already present on the input Message.","required":false},{"name":"evaluation-type","type":"string","description":"The result type expected from the XPath evaluation. This will be the type of the header value.","default":"STRING_RESULT","required":false,"restriction":{"type":"enum","values":["BOOLEAN_RESULT","STRING_RESULT","NUMBER_RESULT","NODE_RESULT","NODE_LIST_RESULT"]}}]},{"occurrence":{"min":0,"max":-1},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"tee","name":"xpath-splitter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.xml.splitter.XPathMessageSplitter\u0027","attributes":[{"name":"iterator","type":"boolean","description":"The iterator mode: \u0027true\u0027 (default) to return an \u0027java.util.Iterator\u0027 for splitting \u0027payload\u0027, \u0027false to return a \u0027java.util.List\u0027. Note: the \u0027list\u0027 contains transformed nodes whereas with the \u0027iterator\u0027 each node is transformed while iterating.","default":"true","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"xpath-expression-ref","type":"string","required":false},{"name":"doc-builder-factory","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"create-documents","type":"boolean","description":"Set this flag to \u0027true\u0027 to convert each resuling Node to a Document before sending replies from this splitter. Default is \u0027false\u0027","default":"false","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"discard-channel","type":"string","description":"The channel where the splitter will send the messages that return an empty container from split function.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"output-properties","type":"string","description":"A set of output properties that will be used to override any of the same properties in effect for the transformation.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"apply-sequence","type":"boolean","description":"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. When true, existing correlation and sequence related headers are pushed onto a stack; downstream components, such as aggregators may pop the stack to revert the existing headers after aggregation. Default is \u0027true\u0027.","default":"true","required":false}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"xpath-expression","description":"Defines an XPath expression - \u0027org.springframework.xml.xpath.XPathExpressionFactory\u0027 with the \u0027createXPathExpression()\u0027 factory-method. Internally XPath expressions will be evaluated as NODESET type and converted to a List\u003cString\u003e representing channel names. Typically such a list will contain a single channel name. However, based on the result of an XPath Expression the XPath router can also take on the characteristics of the Recipient List Router if the XPath Expression returns more than one value, thus resulting in the List\u003cString\u003e containing more than one channel name. In that case the Message will be sent to all channels in the list.","attributes":[{"name":"namespace-map","type":"string","required":false},{"name":"expression","type":"string","required":true},{"name":"id","type":"string","required":false},{"name":"ns-uri","type":"string","required":false},{"name":"ns-prefix","type":"string","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"map","description":"A mapping from a key to an object. Maps may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"key-type","type":"string","description":"The default Java type for nested entry keys. Must be a fully qualified class name.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"description","description":"Contains informative text describing the purpose of the enclosing element. Used primarily for user documentation of XML bean definition documents.","childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[]}},{"occurrence":{"min":0,"max":-1},"name":"entry","description":"A map entry can be an inner bean, ref, value, or collection. The key of the entry is given by the \"key\" attribute or child element.","attributes":[{"name":"value","type":"string","description":"A short-cut alternative to a nested \"\u003cvalue\u003e...\u003c/value\u003e\" element.","required":false},{"name":"key-ref","type":"string","description":"A short-cut alternative to a to a \"key\" element with a nested \"\u003cref bean\u003d\u0027...\u0027/\u003e\".","required":false},{"name":"value-ref","type":"string","description":"A short-cut alternative to a nested \"\u003cref bean\u003d\u0027...\u0027/\u003e\".","required":false},{"name":"value-type","type":"string","description":"A short-cut alternative to a \u0027type\u0027 attribute on a nested \"\u003cvalue type\u003d\u0027...\u0027 \u003e...\u003c/value\u003e\" element.","required":false},{"name":"key","type":"string","description":"Each map element must specify its key as attribute or as child element. A key attribute is always a String value.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"key","description":"A key element can contain an inner bean, ref, value, or collection."},{"occurrence":{"min":0},"name":"description","description":"Contains informative text describing the purpose of the enclosing element. Used primarily for user documentation of XML bean definition documents."},{"occurrence":{"min":0,"max":-1},"name":"bean","description":"Defines a single (usually named) bean. A bean definition may contain nested tags for constructor arguments, property values, lookup methods, and replaced methods. Mixing constructor injection and setter injection on the same bean is explicitly supported.","attributes":[{"name":"depends-on","type":"string","description":"The names of the beans that this bean depends on being initialized. The bean factory will guarantee that these beans get initialized before this bean. Note that dependencies are normally expressed through bean properties or constructor arguments. This property should just be necessary for other kinds of dependencies like statics (*ugh*) or database preparation on startup. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition.","required":false},{"name":"id","type":"string","description":"The unique identifier for a bean. A bean id may not be used more than once within the same \u003cbeans\u003e element.","required":false},{"name":"factory-bean","type":"string","description":"Alternative to class attribute for factory-method usage. If this is specified, no class attribute should be used. This must be set to the name of a bean in the current or ancestor factories that contains the relevant factory method. This allows the factory itself to be configured using Dependency Injection, and an instance (rather than static) method to be used.","required":false},{"name":"factory-method","type":"string","description":"The name of a factory method to use to create this object. Use constructor-arg elements to specify arguments to the factory method, if it takes arguments. Autowiring does not apply to factory methods. If the \"class\" attribute is present, the factory method will be a static method on the class specified by the \"class\" attribute on this bean definition. Often this will be the same class as that of the constructed object - for example, when the factory method is used as an alternative to a constructor. However, it may be on a different class. In that case, the created object will *not* be of the class specified in the \"class\" attribute. This is analogous to FactoryBean behavior. If the \"factory-bean\" attribute is present, the \"class\" attribute is not used, and the factory method will be an instance method on the object returned from a getBean call with the specified bean name. The factory bean may be defined as a singleton or a prototype. The factory method can have any number of arguments. Autowiring is not supported. Use indexed constructor-arg elements in conjunction with the factory-method attribute. Setter Injection can be used in conjunction with a factory method. Method Injection cannot, as the factory method returns an instance, which will be used when the container creates the bean.","required":false},{"name":"parent","type":"string","description":"The name of the parent bean definition. Will use the bean class of the parent if none is specified, but can also override it. In the latter case, the child bean class must be compatible with the parent, i.e. accept the parent\u0027s property values and constructor argument values, if any. A child bean definition will inherit constructor argument values, property values and method overrides from the parent, with the option to add new values. If init method, destroy method, factory bean and/or factory method are specified, they will override the corresponding parent settings. The remaining settings will always be taken from the child definition: depends on, autowire mode, scope, lazy init.","required":false},{"name":"lazy-init","type":"string","description":"Indicates whether this bean is to be lazily initialized. If \"false\", it will be instantiated on startup by bean factories that perform eager initialization of singletons. The effective default is \"false\". Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition. It can be shared through the \u0027default-lazy-init\u0027 attribute at the \u0027beans\u0027 level and potentially inherited from outer \u0027beans\u0027 defaults in case of nested \u0027beans\u0027 sections (e.g. with different profiles).","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"init-method","type":"string","description":"The name of the custom initialization method to invoke after setting bean properties. The method must have no arguments, but may throw any exception. This is an alternative to implementing Spring\u0027s InitializingBean interface or marking a method with the PostConstruct annotation.","required":false},{"name":"primary","type":"boolean","description":"Specifies that this bean should be given preference when multiple candidates are qualified to autowire a single-valued dependency. If exactly one \u0027primary\u0027 bean exists among the candidates, it will be the autowired value.","required":false},{"name":"name","type":"string","description":"Can be used to create one or more aliases illegal in an (XML) id. Multiple aliases can be separated by any number of spaces, commas, or semi-colons (or indeed any mixture of the three).","required":false},{"name":"autowire","type":"string","description":"Controls whether bean properties are \"autowired\". This is an automagical process in which bean references don\u0027t need to be coded explicitly in the XML bean definition file, but rather the Spring container works out dependencies. The effective default is \"no\". There are 4 modes: 1. \"no\" The traditional Spring default. No automagical wiring. Bean references must be defined in the XML file via the \u003cref/\u003e element (or \"ref\" attribute). We recommend this in most cases as it makes documentation more explicit. Note that this default mode also allows for annotation-driven autowiring, if activated. \"no\" refers to externally driven autowiring only, not affecting any autowiring demands that the bean class itself expresses. 2. \"byName\" Autowiring by property name. If a bean of class Cat exposes a \"dog\" property, Spring will try to set this to the value of the bean \"dog\" in the current container. If there is no matching bean by name, nothing special happens. 3. \"byType\" Autowiring if there is exactly one bean of the property type in the container. If there is more than one, a fatal error is raised, and you cannot use byType autowiring for that bean. If there is none, nothing special happens. 4. \"constructor\" Analogous to \"byType\" for constructor arguments. If there is not exactly one bean of the constructor argument type in the bean factory, a fatal error is raised. Note that explicit dependencies, i.e. \"property\" and \"constructor-arg\" elements, always override autowiring. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition. It can be shared through the \u0027default-autowire\u0027 attribute at the \u0027beans\u0027 level and potentially inherited from outer \u0027beans\u0027 defaults in case of nested \u0027beans\u0027 sections (e.g. with different profiles).","default":"default","required":false,"restriction":{"type":"enum","values":["default","no","byName","byType","constructor"]}},{"name":"abstract","type":"boolean","description":"Is this bean \"abstract\", that is, not meant to be instantiated itself but rather just serving as parent for concrete child bean definitions? The default is \"false\". Specify \"true\" to tell the bean factory to not try to instantiate that particular bean in any case. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per abstract bean definition.","required":false},{"name":"destroy-method","type":"string","description":"The name of the custom destroy method to invoke on bean factory shutdown. The method must have no arguments, but may throw any exception. This is an alternative to implementing Spring\u0027s DisposableBean interface or the standard Java Closeable/AutoCloseable interface, or marking a method with the PreDestroy annotation. Note: Only invoked on beans whose lifecycle is under the full control of the factory - which is always the case for singletons, but not guaranteed for any other scope.","required":false},{"name":"scope","type":"string","description":"The scope of this bean: typically \"singleton\" (one shared instance, which will be returned by all calls to getBean with the given id), or \"prototype\" (independent instance resulting from each call to getBean). By default, a bean will be a singleton, unless the bean has a parent bean definition in which case it will inherit the parent\u0027s scope. Singletons are most commonly used, and are ideal for multi-threaded service objects. Further scopes, such as \"request\" or \"session\", might be supported by extended bean factories (e.g. in a web environment). Inner bean definitions inherit the scope of their containing bean definition, unless explicitly specified: The inner bean will be a singleton if the containing bean is a singleton, and a prototype if the containing bean is a prototype, etc.","required":false},{"name":"autowire-candidate","type":"string","description":"Indicates whether or not this bean should be considered when looking for matching candidates to satisfy another bean\u0027s autowiring requirements. Note that this does not affect explicit references by name, which will get resolved even if the specified bean is not marked as an autowire candidate.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"class","type":"string","description":"The fully qualified name of the bean\u0027s class, except if it serves only as a parent definition for child bean definitions.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Defines a reference to another bean in this factory or an external factory (parent or included factory).","attributes":[{"name":"parent","type":"string","description":"The name of the referenced bean in a parent factory.","required":false},{"name":"bean","type":"string","description":"The name of the referenced bean.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"idref","description":"The id of another bean in this factory or an external factory (parent or included factory). While a regular \u0027value\u0027 element could instead be used for the same effect, using idref indicates that the Spring container should check that the value actually corresponds to a bean id.","attributes":[{"name":"bean","type":"string","description":"The name of the referenced bean.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"value","description":"Contains a string representation of a property value. The property may be a string, or may be converted to the required type using the JavaBeans PropertyEditor machinery. This makes it possible for application developers to write custom PropertyEditor implementations that can convert strings to arbitrary target objects. Note that this is recommended for simple objects only. Configure more complex objects by populating JavaBean properties with references to other beans.","attributes":[{"name":"type","type":"string","description":"The exact type that the value should be converted to. Only needed if the type of the target property or constructor argument is too generic: for example, in case of a collection element.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"null","description":"Denotes a Java null value. Necessary because an empty \"value\" tag will resolve to an empty String, which will not be resolved to a null value unless a special PropertyEditor does so."},{"occurrence":{"min":0,"max":-1},"name":"array","description":"An array can contain multiple inner bean, ref, collection, or value elements. This configuration element will always result in an array, even when being defined e.g. as a value for a map with value type Object.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"list","description":"A list can contain multiple inner bean, ref, collection, or value elements. A list can also map to an array type; the necessary conversion is performed automatically.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"set","description":"A set can contain multiple inner bean, ref, collection, or value elements.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"map","description":"A mapping from a key to an object. Maps may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"key-type","type":"string","description":"The default Java type for nested entry keys. Must be a fully qualified class name.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"props","description":"Props elements differ from map elements in that values must be strings. Props may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]}]}}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"endpoint","connectionType":"passthru","name":"xpath-expression","description":"Defines an XPath expression - \u0027org.springframework.xml.xpath.XPathExpressionFactory\u0027 with the \u0027createXPathExpression()\u0027 factory-method. Internally XPath expressions will be evaluated as NODESET type and converted to a List\u003cString\u003e representing channel names. Typically such a list will contain a single channel name. However, based on the result of an XPath Expression the XPath router can also take on the characteristics of the Recipient List Router if the XPath Expression returns more than one value, thus resulting in the List\u003cString\u003e containing more than one channel name. In that case the Message will be sent to all channels in the list."},{"role":"router","connectionType":"tee","name":"validating-filter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.filter.MessageFilter\u0027 with an \u0027org.springframework.integration.xml.selector.XmlValidatingMessageSelector\u0027","attributes":[{"name":"xml-validator","type":"string","description":"Reference to a custom \u0027org.springframework.xml.validation.XmlValidator\u0027 strategy","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"discard-channel","type":"string","description":"Message Channel where you want rejected messages to be sent.","required":false},{"name":"id","type":"string","required":false},{"name":"schema-type","type":"string","default":"xml-schema","required":false,"restriction":{"type":"enum","values":["xml-schema","relax-ng"]}},{"name":"schema-location","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"xml-converter","type":"string","description":"Reference to a custom \u0027org.springframework.integration.xml.XmlPayloadConverter\u0027 strategy","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"throw-exception-on-rejection","type":"boolean","default":"false","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"marshalling-transformer","description":"Defines an XML (\u0027org.springframework.integration.xml.transformer.MarshallingTransformer\u0027) marshalling transformer.","attributes":[{"name":"result-factory","type":"string","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"extract-payload","type":"string","description":"Specify whether to extract the payload before passing to the Marshaller. By default, this value is \"true\". To have the full Message passed instead, set this to \"false\".","default":"true","required":false},{"name":"result-transformer","type":"string","required":false},{"name":"marshaller","type":"string","required":true},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"result-type","type":"string","required":false,"restriction":{"type":"enum","values":["DOMResult","StringResult"]}}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}},{"role":"router","connectionType":"tee","name":"xpath-filter","description":"Configures a Consumer Endpoint for the \u0027org.springframework.integration.filter.MessageFilter\u0027 with an \u0027org.springframework.integration.xml.selector.AbstractXPathMessageSelector\u0027 implementation based on the configuration options. If the XPath expression will evaluate to a boolean, no configuration attributes are required. If the XPath expression will evaluate to a String, a \"match-value\" should be provided against which the evaluation result will be matched. There are three options for the \"match-type\": exact, case-insensitive, and regex. These correspond to the equals, equals-ignore-case, and matches operations on java.lang.String, respectively. When providing a \u0027match-type\u0027 value of \u0027regex\u0027, the value provided in \u0027match-value\u0027 must be a valid Regular Expression.","attributes":[{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"discard-channel","type":"string","description":"Message Channel where you want rejected messages to be sent.","required":false},{"name":"id","type":"string","required":false},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false},{"name":"match-type","type":"string","description":"Type of match to apply between the XPath evaluation result and the \u0027match-value\u0027. Default is \"exact\".","default":"exact","required":false,"restriction":{"type":"enum","values":["exact","case-insensitive","regex"]}},{"name":"xpath-expression-ref","type":"string","description":"Reference to an XPath expression instance to evaluate.","required":false},{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"match-value","type":"string","description":"String value to be matched against the XPath evaluation result. If this is not provided, then the XPath evaluation MUST produce a boolean result directly.","required":false},{"name":"throw-exception-on-rejection","type":"boolean","default":"false","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"occurrence":{"min":0},"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}},{"name":"xpath-expression","description":"Defines an XPath expression - \u0027org.springframework.xml.xpath.XPathExpressionFactory\u0027 with the \u0027createXPathExpression()\u0027 factory-method. Internally XPath expressions will be evaluated as NODESET type and converted to a List\u003cString\u003e representing channel names. Typically such a list will contain a single channel name. However, based on the result of an XPath Expression the XPath router can also take on the characteristics of the Recipient List Router if the XPath Expression returns more than one value, thus resulting in the List\u003cString\u003e containing more than one channel name. In that case the Message will be sent to all channels in the list.","attributes":[{"name":"namespace-map","type":"string","required":false},{"name":"expression","type":"string","required":true},{"name":"id","type":"string","required":false},{"name":"ns-uri","type":"string","required":false},{"name":"ns-prefix","type":"string","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"map","description":"A mapping from a key to an object. Maps may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"key-type","type":"string","description":"The default Java type for nested entry keys. Must be a fully qualified class name.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"description","description":"Contains informative text describing the purpose of the enclosing element. Used primarily for user documentation of XML bean definition documents.","childGroup":{"indicator":"choice","occurrence":{"min":0,"max":-1},"children":[]}},{"occurrence":{"min":0,"max":-1},"name":"entry","description":"A map entry can be an inner bean, ref, value, or collection. The key of the entry is given by the \"key\" attribute or child element.","attributes":[{"name":"value","type":"string","description":"A short-cut alternative to a nested \"\u003cvalue\u003e...\u003c/value\u003e\" element.","required":false},{"name":"key-ref","type":"string","description":"A short-cut alternative to a to a \"key\" element with a nested \"\u003cref bean\u003d\u0027...\u0027/\u003e\".","required":false},{"name":"value-ref","type":"string","description":"A short-cut alternative to a nested \"\u003cref bean\u003d\u0027...\u0027/\u003e\".","required":false},{"name":"value-type","type":"string","description":"A short-cut alternative to a \u0027type\u0027 attribute on a nested \"\u003cvalue type\u003d\u0027...\u0027 \u003e...\u003c/value\u003e\" element.","required":false},{"name":"key","type":"string","description":"Each map element must specify its key as attribute or as child element. A key attribute is always a String value.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"key","description":"A key element can contain an inner bean, ref, value, or collection."},{"occurrence":{"min":0},"name":"description","description":"Contains informative text describing the purpose of the enclosing element. Used primarily for user documentation of XML bean definition documents."},{"occurrence":{"min":0,"max":-1},"name":"bean","description":"Defines a single (usually named) bean. A bean definition may contain nested tags for constructor arguments, property values, lookup methods, and replaced methods. Mixing constructor injection and setter injection on the same bean is explicitly supported.","attributes":[{"name":"depends-on","type":"string","description":"The names of the beans that this bean depends on being initialized. The bean factory will guarantee that these beans get initialized before this bean. Note that dependencies are normally expressed through bean properties or constructor arguments. This property should just be necessary for other kinds of dependencies like statics (*ugh*) or database preparation on startup. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition.","required":false},{"name":"id","type":"string","description":"The unique identifier for a bean. A bean id may not be used more than once within the same \u003cbeans\u003e element.","required":false},{"name":"factory-bean","type":"string","description":"Alternative to class attribute for factory-method usage. If this is specified, no class attribute should be used. This must be set to the name of a bean in the current or ancestor factories that contains the relevant factory method. This allows the factory itself to be configured using Dependency Injection, and an instance (rather than static) method to be used.","required":false},{"name":"factory-method","type":"string","description":"The name of a factory method to use to create this object. Use constructor-arg elements to specify arguments to the factory method, if it takes arguments. Autowiring does not apply to factory methods. If the \"class\" attribute is present, the factory method will be a static method on the class specified by the \"class\" attribute on this bean definition. Often this will be the same class as that of the constructed object - for example, when the factory method is used as an alternative to a constructor. However, it may be on a different class. In that case, the created object will *not* be of the class specified in the \"class\" attribute. This is analogous to FactoryBean behavior. If the \"factory-bean\" attribute is present, the \"class\" attribute is not used, and the factory method will be an instance method on the object returned from a getBean call with the specified bean name. The factory bean may be defined as a singleton or a prototype. The factory method can have any number of arguments. Autowiring is not supported. Use indexed constructor-arg elements in conjunction with the factory-method attribute. Setter Injection can be used in conjunction with a factory method. Method Injection cannot, as the factory method returns an instance, which will be used when the container creates the bean.","required":false},{"name":"parent","type":"string","description":"The name of the parent bean definition. Will use the bean class of the parent if none is specified, but can also override it. In the latter case, the child bean class must be compatible with the parent, i.e. accept the parent\u0027s property values and constructor argument values, if any. A child bean definition will inherit constructor argument values, property values and method overrides from the parent, with the option to add new values. If init method, destroy method, factory bean and/or factory method are specified, they will override the corresponding parent settings. The remaining settings will always be taken from the child definition: depends on, autowire mode, scope, lazy init.","required":false},{"name":"lazy-init","type":"string","description":"Indicates whether this bean is to be lazily initialized. If \"false\", it will be instantiated on startup by bean factories that perform eager initialization of singletons. The effective default is \"false\". Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition. It can be shared through the \u0027default-lazy-init\u0027 attribute at the \u0027beans\u0027 level and potentially inherited from outer \u0027beans\u0027 defaults in case of nested \u0027beans\u0027 sections (e.g. with different profiles).","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"init-method","type":"string","description":"The name of the custom initialization method to invoke after setting bean properties. The method must have no arguments, but may throw any exception. This is an alternative to implementing Spring\u0027s InitializingBean interface or marking a method with the PostConstruct annotation.","required":false},{"name":"primary","type":"boolean","description":"Specifies that this bean should be given preference when multiple candidates are qualified to autowire a single-valued dependency. If exactly one \u0027primary\u0027 bean exists among the candidates, it will be the autowired value.","required":false},{"name":"name","type":"string","description":"Can be used to create one or more aliases illegal in an (XML) id. Multiple aliases can be separated by any number of spaces, commas, or semi-colons (or indeed any mixture of the three).","required":false},{"name":"autowire","type":"string","description":"Controls whether bean properties are \"autowired\". This is an automagical process in which bean references don\u0027t need to be coded explicitly in the XML bean definition file, but rather the Spring container works out dependencies. The effective default is \"no\". There are 4 modes: 1. \"no\" The traditional Spring default. No automagical wiring. Bean references must be defined in the XML file via the \u003cref/\u003e element (or \"ref\" attribute). We recommend this in most cases as it makes documentation more explicit. Note that this default mode also allows for annotation-driven autowiring, if activated. \"no\" refers to externally driven autowiring only, not affecting any autowiring demands that the bean class itself expresses. 2. \"byName\" Autowiring by property name. If a bean of class Cat exposes a \"dog\" property, Spring will try to set this to the value of the bean \"dog\" in the current container. If there is no matching bean by name, nothing special happens. 3. \"byType\" Autowiring if there is exactly one bean of the property type in the container. If there is more than one, a fatal error is raised, and you cannot use byType autowiring for that bean. If there is none, nothing special happens. 4. \"constructor\" Analogous to \"byType\" for constructor arguments. If there is not exactly one bean of the constructor argument type in the bean factory, a fatal error is raised. Note that explicit dependencies, i.e. \"property\" and \"constructor-arg\" elements, always override autowiring. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per concrete bean definition. It can be shared through the \u0027default-autowire\u0027 attribute at the \u0027beans\u0027 level and potentially inherited from outer \u0027beans\u0027 defaults in case of nested \u0027beans\u0027 sections (e.g. with different profiles).","default":"default","required":false,"restriction":{"type":"enum","values":["default","no","byName","byType","constructor"]}},{"name":"abstract","type":"boolean","description":"Is this bean \"abstract\", that is, not meant to be instantiated itself but rather just serving as parent for concrete child bean definitions? The default is \"false\". Specify \"true\" to tell the bean factory to not try to instantiate that particular bean in any case. Note: This attribute will not be inherited by child bean definitions. Hence, it needs to be specified per abstract bean definition.","required":false},{"name":"destroy-method","type":"string","description":"The name of the custom destroy method to invoke on bean factory shutdown. The method must have no arguments, but may throw any exception. This is an alternative to implementing Spring\u0027s DisposableBean interface or the standard Java Closeable/AutoCloseable interface, or marking a method with the PreDestroy annotation. Note: Only invoked on beans whose lifecycle is under the full control of the factory - which is always the case for singletons, but not guaranteed for any other scope.","required":false},{"name":"scope","type":"string","description":"The scope of this bean: typically \"singleton\" (one shared instance, which will be returned by all calls to getBean with the given id), or \"prototype\" (independent instance resulting from each call to getBean). By default, a bean will be a singleton, unless the bean has a parent bean definition in which case it will inherit the parent\u0027s scope. Singletons are most commonly used, and are ideal for multi-threaded service objects. Further scopes, such as \"request\" or \"session\", might be supported by extended bean factories (e.g. in a web environment). Inner bean definitions inherit the scope of their containing bean definition, unless explicitly specified: The inner bean will be a singleton if the containing bean is a singleton, and a prototype if the containing bean is a prototype, etc.","required":false},{"name":"autowire-candidate","type":"string","description":"Indicates whether or not this bean should be considered when looking for matching candidates to satisfy another bean\u0027s autowiring requirements. Note that this does not affect explicit references by name, which will get resolved even if the specified bean is not marked as an autowire candidate.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"class","type":"string","description":"The fully qualified name of the bean\u0027s class, except if it serves only as a parent definition for child bean definitions.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"ref","description":"Defines a reference to another bean in this factory or an external factory (parent or included factory).","attributes":[{"name":"parent","type":"string","description":"The name of the referenced bean in a parent factory.","required":false},{"name":"bean","type":"string","description":"The name of the referenced bean.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"idref","description":"The id of another bean in this factory or an external factory (parent or included factory). While a regular \u0027value\u0027 element could instead be used for the same effect, using idref indicates that the Spring container should check that the value actually corresponds to a bean id.","attributes":[{"name":"bean","type":"string","description":"The name of the referenced bean.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"value","description":"Contains a string representation of a property value. The property may be a string, or may be converted to the required type using the JavaBeans PropertyEditor machinery. This makes it possible for application developers to write custom PropertyEditor implementations that can convert strings to arbitrary target objects. Note that this is recommended for simple objects only. Configure more complex objects by populating JavaBean properties with references to other beans.","attributes":[{"name":"type","type":"string","description":"The exact type that the value should be converted to. Only needed if the type of the target property or constructor argument is too generic: for example, in case of a collection element.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"null","description":"Denotes a Java null value. Necessary because an empty \"value\" tag will resolve to an empty String, which will not be resolved to a null value unless a special PropertyEditor does so."},{"occurrence":{"min":0,"max":-1},"name":"array","description":"An array can contain multiple inner bean, ref, collection, or value elements. This configuration element will always result in an array, even when being defined e.g. as a value for a map with value type Object.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"list","description":"A list can contain multiple inner bean, ref, collection, or value elements. A list can also map to an array type; the necessary conversion is performed automatically.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"set","description":"A set can contain multiple inner bean, ref, collection, or value elements.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]},{"occurrence":{"min":0,"max":-1},"name":"map","description":"A mapping from a key to an object. Maps may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}},{"name":"key-type","type":"string","description":"The default Java type for nested entry keys. Must be a fully qualified class name.","required":false}]},{"occurrence":{"min":0,"max":-1},"name":"props","description":"Props elements differ from map elements in that values must be strings. Props may be empty.","attributes":[{"name":"value-type","type":"string","description":"The default Java type for nested values. Must be a fully qualified class name.","required":false},{"name":"merge","type":"string","description":"Enables/disables merging for collections when using parent/child beans.","default":"default","required":false,"restriction":{"type":"enum","values":["default","true","false"]}}]}]}}]}}]}}]}},{"role":"transformer","connectionType":"passthru","name":"unmarshalling-transformer","description":"Defines an XML (\u0027org.springframework.integration.xml.transformer.UnmarshallingTransformer\u0027) unmarshalling transformer.","attributes":[{"name":"output-channel","type":"string","description":"Identifies the Message channel where Message will be sent after it\u0027s being processed by this endpoint","required":false},{"name":"role","type":"string","description":"Assigns this endpoint to a role. Endpoints in a role can be started/stopped as a group. See \u0027SmartLifecycleRoleController\u0027.","required":false},{"name":"auto-startup","type":"boolean","description":"Boolean value indicating whether this endpoint should start automatically.","required":false},{"name":"input-channel","type":"string","description":"The receiving Message channel of this endpoint","required":false},{"name":"order","type":"string","description":"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.","required":false},{"name":"phase","type":"string","description":"The lifecycle phase within which this endpoint should start and stop. The lower the value the earlier this endpoint will start and the later it will stop. The default is 0. Values can be negative. See SmartLifeCycle.","required":false},{"name":"id","type":"string","required":false},{"name":"unmarshaller","type":"string","required":true},{"name":"send-timeout","type":"string","description":"Specify the maximum amount of time in milliseconds to wait when sending a reply Message to the output channel. Defaults to \u0027-1\u0027 - blocking indefinitely. It is applied only if the output channel has some \u0027sending\u0027 limitations, e.g. QueueChannel with fixed a \u0027capacity\u0027. In this case a MessageDeliveryException is thrown. The \u0027send-timeout\u0027 is ignored in case of AbstractSubscribableChannel implementations.","required":false}],"childGroup":{"indicator":"sequence","children":[{"name":"poller","description":"Defines a top-level poller - \u0027org.springframework.integration.scheduling.PollerMetadata\u0027.","attributes":[{"name":"time-unit","type":"string","description":"The java.util.concurrent.TimeUnit enum value. This can ONLY be used in combination with the \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 attributes. If combined with either \u0027cron\u0027 or a \u0027trigger\u0027 reference attribute, it will cause a failure. The minimal supported granularity for a PeriodicTrigger is MILLISECONDS. Therefore, the only available options are MILLISECONDS and SECONDS. If this value is not provided, then any \u0027fixed-delay\u0027 or \u0027fixed-rate\u0027 value will be interpreted as MILLISECONDS by default. Basically this enum provides a convenience for SECONDS-based interval trigger values. For hourly, daily, and monthly settings, consider using a \u0027cron\u0027 trigger instead.","required":false,"restriction":{"type":"enum","values":["MILLISECONDS","SECONDS"]}},{"name":"error-channel","type":"string","description":"Identifies channel that error messages will be sent to if a failure occurs in this poller\u0027s invocation. To completely suppress Exceptions, provide a reference to the \"nullChannel\" here.","required":false},{"name":"fixed-delay","type":"string","description":"Fixed delay trigger (in milliseconds).","required":false},{"name":"max-messages-per-poll","type":"string","description":"The maximum number of messages that will be produced for each poll. Defaults to infinity (indicated by -1) for polling consumers, and 1 for polled inbound channel adapters.","required":false},{"name":"fixed-rate","type":"string","description":"Fixed rate trigger (in milliseconds).","required":false},{"name":"trigger","type":"string","required":false},{"name":"ref","type":"string","description":"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.","required":false},{"name":"default","type":"boolean","default":"false","required":false},{"name":"task-executor","type":"string","required":false},{"name":"id","type":"string","required":false},{"name":"receive-timeout","type":"string","description":"Only applies to polling consumers - the time the poll thread will wait after the trigger for a new message to arrive. Defaults to 1000 (1 second). For polled inbound channel adapters, whether or not the polling thread blocks is dependent on the message source implementation.","required":false},{"name":"cron","type":"string","description":"Cron trigger.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0},"name":"transactional","description":"Run each poll task in a transaction; mutually exclusive with \u0027advice-chain\u0027; add a transaction advice if you need transactions in addition to other advices.","attributes":[{"name":"timeout","type":"string","description":"The transaction timeout value (in seconds).","default":"-1","required":false},{"name":"propagation","type":"string","description":"The transaction propagation behavior.","default":"REQUIRED","required":false,"restriction":{"type":"enum","values":["REQUIRED","SUPPORTS","MANDATORY","REQUIRES_NEW","NOT_SUPPORTED","NEVER","NESTED"]}},{"name":"read-only","type":"string","description":"Is this transaction read-only?","default":"false","required":false},{"name":"transaction-manager","type":"string","description":"The bean name of the PlatformTransactionManager to use.","default":"transactionManager","required":false},{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method.","required":false},{"name":"isolation","type":"string","description":"The transaction isolation level.","default":"DEFAULT","required":false,"restriction":{"type":"enum","values":["DEFAULT","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE"]}}]},{"occurrence":{"min":0},"name":"advice-chain","description":"A chain of nested AOP \u0027Advice\u0027 objects applied to the poller task. Mutually exclusive with \u0027transactional\u0027.","attributes":[{"name":"synchronization-factory","type":"string","description":"Reference to an instance of org.springframework.integration.transaction.TransactionSynchronizationFactory which will return an instance of org.springframework.transaction.support.TransactionSynchronization via its create(..) method. Setting of this attribute will only have an affect if a Transaction advice is present in the chain.","required":false}],"childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]}]}}]}},{"name":"request-handler-advice-chain","childGroup":{"indicator":"sequence","children":[{"occurrence":{"min":0,"max":-1},"name":"ref","attributes":[{"name":"bean","type":"string","required":true}]},{"occurrence":{"min":0,"max":-1},"name":"retry-advice","description":"A convenient way of defining a MessageHandlerRetryAdvice. Uses a SimpleRetryPolicy and an optional Exponential or Fixed BackOffPolicy. Default is no back off.","attributes":[{"name":"recovery-channel","type":"string","description":"A MessageChannel to receive the message after retries are exhausted. Default is to not recover and throw the exception.","required":false},{"name":"max-attempts","type":"string","description":"The maximum number of attempts to invoke the handler. Default 3.","required":false},{"name":"send-timeout","type":"string","description":"A timeout applied when sending to the \u0027recovery-channel\u0027. Only applies if the recovery channel can block (such as a bounded QueueChannel that is full).","required":false}],"childGroup":{"indicator":"choice","occurrence":{"min":0},"children":[{"name":"fixed-back-off","description":"Defines a fixed back off policy.","attributes":[{"name":"interval","type":"string","description":"The interval in milliseconds between attempts. Default 1000.","required":false}]},{"name":"exponential-back-off","description":"Defines an exponential back off policy.","attributes":[{"name":"maximum","type":"string","description":"The maximum interval in milliseconds between attempts; caps an interval calculated using the multiplier. Default 30000.","required":false},{"name":"multiplier","type":"string","description":"The previous interval is multiplied by this to determine the next interval, but also see \u0027maximum\u0027. Default 2.0.","required":false},{"name":"initial","type":"string","description":"The interval in milliseconds between the first and second attempts. Default 100.","required":false}]}]}}]}}]}}]}
\ No newline at end of file
diff --git a/ui/src/singletons/eipDefinitions.ts b/ui/src/singletons/eipDefinitions.ts
index 452767f1..5434ac48 100644
--- a/ui/src/singletons/eipDefinitions.ts
+++ b/ui/src/singletons/eipDefinitions.ts
@@ -10,6 +10,9 @@ import eipDefintion from "../json/springIntegrationEipComponents.json"
export const EIP_SCHEMA: Readonly =
eipDefintion as EipComponentDefinition
+export const eipIdToString = (eipId: EipId) =>
+ `${eipId.namespace}.${eipId.name}`
+
const getFlatMap = (schema: EipComponentDefinition) => {
const map = new Map()
for (const [namespace, componentList] of Object.entries(schema)) {
@@ -21,7 +24,7 @@ const getFlatMap = (schema: EipComponentDefinition) => {
const componentFlatMap = getFlatMap(EIP_SCHEMA)
export const lookupEipComponent = (eipId: EipId) => {
- const component = componentFlatMap.get(`${eipId.namespace}.${eipId.name}`)
+ const component = componentFlatMap.get(eipIdToString(eipId))
if (component === undefined) {
console.warn(`Did not find component with id: ${JSON.stringify(eipId)}`)
}
@@ -63,9 +66,7 @@ const contentBasedRouterTargets: ReadonlyMap = new Map([
export const lookupContentBasedRouterKeys = (
eipId: EipId
): RouterKeyDef | null => {
- const target = contentBasedRouterTargets.get(
- `${eipId.namespace}.${eipId.name}`
- )
+ const target = contentBasedRouterTargets.get(eipIdToString(eipId))
if (!target) {
return null
}
diff --git a/ui/src/singletons/followerNodeDefs.ts b/ui/src/singletons/followerNodeDefs.ts
new file mode 100644
index 00000000..41b53a5d
--- /dev/null
+++ b/ui/src/singletons/followerNodeDefs.ts
@@ -0,0 +1,49 @@
+import { CustomEdge } from "../api/flow"
+import { ConnectionType, EipId } from "../api/generated/eipFlow"
+import { lookupEipComponent } from "./eipDefinitions"
+import { getEipId } from "./store/storeViews"
+
+interface FollowerNodeDescriptor {
+ eipId: EipId
+ generateLabel: (leaderLabel: string) => string
+
+ hiddenEdges?: (leaderId: string, followerId: string) => Partial[]
+ overrides?: {
+ connectionType: ConnectionType
+ }
+}
+
+// Note: currently we assume at most one follower node is allowed per leader,
+// this constraint may be relaxed in the future if a use case requiring multiple followers appears.
+export const describeFollower = (
+ leaderId: EipId
+): FollowerNodeDescriptor | null => {
+ const leaderComponent = lookupEipComponent(leaderId)
+ if (!leaderComponent) {
+ return null
+ }
+
+ if (leaderComponent.connectionType === "inbound_request_reply") {
+ // For greater separation of concerns, consider returning a node generator function instead.
+ return {
+ eipId: { namespace: "integration", name: "channel" },
+ generateLabel: (leaderLabel) => `${leaderLabel}-reply-channel`,
+ hiddenEdges: (leaderId, followerId) => [
+ {
+ source: followerId,
+ target: leaderId,
+ },
+ ],
+ overrides: {
+ connectionType: "sink",
+ },
+ }
+ }
+
+ return null
+}
+
+export const describeFollowerFromId = (leaderId: string) => {
+ const eipId = getEipId(leaderId)
+ return eipId ? describeFollower(eipId) : null
+}
diff --git a/ui/src/singletons/store/__snapshots__/diagramToEipFlow.test.ts.snap b/ui/src/singletons/store/__snapshots__/diagramToEipFlow.test.ts.snap
index bc81afb6..045949ba 100644
--- a/ui/src/singletons/store/__snapshots__/diagramToEipFlow.test.ts.snap
+++ b/ui/src/singletons/store/__snapshots__/diagramToEipFlow.test.ts.snap
@@ -151,6 +151,69 @@ exports[`diagram with deep child nesting 1`] = `
}
`;
+exports[`diagram with inbound-request-reply node 1`] = `
+{
+ "edges": [
+ {
+ "id": "ch-testIn-QvmTf6Jm4O",
+ "source": "testIn",
+ "target": "QvmTf6Jm4O",
+ "type": "default",
+ },
+ {
+ "id": "ch-QvmTf6Jm4O-testIn-reply-channel",
+ "source": "QvmTf6Jm4O",
+ "target": "testIn-reply-channel",
+ "type": "default",
+ },
+ {
+ "id": "ch-testIn-reply-channel-testIn",
+ "source": "testIn-reply-channel",
+ "target": "testIn",
+ "type": "default",
+ },
+ ],
+ "nodes": [
+ {
+ "attributes": {},
+ "children": [],
+ "connectionType": "inbound_request_reply",
+ "description": undefined,
+ "eipId": {
+ "name": "inbound-gateway",
+ "namespace": "http",
+ },
+ "id": "testIn",
+ "role": "endpoint",
+ },
+ {
+ "attributes": {},
+ "children": [],
+ "connectionType": "passthru",
+ "description": undefined,
+ "eipId": {
+ "name": "channel",
+ "namespace": "integration",
+ },
+ "id": "testIn-reply-channel",
+ "role": "channel",
+ },
+ {
+ "attributes": {},
+ "children": [],
+ "connectionType": "passthru",
+ "description": undefined,
+ "eipId": {
+ "name": "transformer",
+ "namespace": "integration",
+ },
+ "id": "QvmTf6Jm4O",
+ "role": "transformer",
+ },
+ ],
+}
+`;
+
exports[`standard diagram to EipFlow success 1`] = `
{
"edges": [
diff --git a/ui/src/singletons/store/appActions.test.ts b/ui/src/singletons/store/appActions.test.ts
index d09fe75e..a75b42f2 100644
--- a/ui/src/singletons/store/appActions.test.ts
+++ b/ui/src/singletons/store/appActions.test.ts
@@ -4,8 +4,11 @@ import isDeepEqual from "fast-deep-equal"
import { beforeEach, describe, expect, test, vi } from "vitest"
import {
ChannelMapping,
+ CustomNodeType,
DynamicEdgeData,
- EIP_NODE_TYPE,
+ EipFlowNode,
+ FollowerNode,
+ isEipNode,
Layout,
RouterKey,
} from "../../api/flow"
@@ -21,7 +24,6 @@ import nestedChildFlow from "./testdata/store-initializers/nestedChildFlow.json"
import selectedNodeFlow from "./testdata/store-initializers/singleSelectedNodeFlow.json"
import standardFlow from "./testdata/store-initializers/standardFlow.json"
import unspecifiedRouterFlow from "./testdata/store-initializers/unspecifiedRouterFlow.json"
-import verticalFlow from "./testdata/store-initializers/verticalFlow.json"
import { EipId } from "../../api/generated/eipFlow"
import {
@@ -33,6 +35,7 @@ import {
enableChild,
importFlowFromJson,
reorderEnabledChildren,
+ switchNodeSelection,
toggleLayoutDensity,
updateContentRouterKey,
updateDynamicEdgeMapping,
@@ -55,6 +58,7 @@ vi.mock("zustand")
const STANDARD_INBOUND_ADAPTER = "9KWCqlIyy7"
const STANDARD_ROUTER = "LoiC2CFbLP"
+const STANDARD_FILTER = "SV43RVeijQ"
const STANDARD_POLLER_CHILD = "mcyTryMPewJ"
const STANDARD_TRANSACTIONAL_CHILD = "V1ls9ri4szs"
const NESTED_CHILD_PARENT_ID = "FL5Tssm8tV"
@@ -65,10 +69,10 @@ beforeEach(() => {
})
})
-const getNode = (id: string) => {
+const getEipNode = (id: string) => {
const nodes = getNodesView()
const target = nodes.find((n) => n.id === id)
- if (!target) {
+ if (!target || !isEipNode(target)) {
throw new Error(`Could not find node with id: ${id}`)
}
return target
@@ -81,36 +85,24 @@ const getNodePositions = () =>
},
}))
+const updateSelectedNodes = (ids: Set) => ({
+ ...standardFlow,
+ nodes: standardFlow.nodes.map((node) => {
+ if (ids.has(node.id)) {
+ return { ...node, selected: true }
+ }
+ return node
+ }),
+})
+
describe("create dropped node", () => {
- test.each([
- {
- msg: "create with horizontal layout",
- storeState: standardFlow,
- orientation: "horizontal",
- handlePosition: {
- targetPosition: Position.Left,
- sourcePosition: Position.Right,
- },
- },
- {
- msg: "create with vertical layout",
- storeState: verticalFlow,
- orientation: "vertical",
- handlePosition: {
- targetPosition: Position.Top,
- sourcePosition: Position.Bottom,
- },
- },
- ])("$msg", ({ storeState, orientation, handlePosition }) => {
- // Initialize store
+ beforeEach(() => {
act(() => {
- resetMockStore(storeState)
+ resetMockStore(standardFlow)
})
+ })
- // Assert expected layout
- const layout = getLayoutView()
- expect(layout.orientation).toEqual(orientation)
-
+ test("drop basic node", () => {
const eipId = { namespace: "test", name: "transformer" }
const position = { x: 5, y: 10 }
act(() => createDroppedNode(eipId, position))
@@ -120,9 +112,32 @@ describe("create dropped node", () => {
expect(node.position).toEqual(position)
expect(node.id).toBeTruthy()
- expect(node.type).toEqual(EIP_NODE_TYPE)
- expect(node.targetPosition).toEqual(handlePosition.targetPosition)
- expect(node.sourcePosition).toEqual(handlePosition.sourcePosition)
+ expect(node.type).toEqual(CustomNodeType.EipNode)
+ })
+
+ test("drop node with a follower", () => {
+ const eipId = { namespace: "http", name: "inbound-gateway" }
+ const position = { x: 5, y: 10 }
+ act(() => createDroppedNode(eipId, position))
+
+ const nodes = getNodesView()
+ const leader = nodes.find((n) =>
+ isDeepEqual(getEipId(n.id), eipId)
+ )! as EipFlowNode
+
+ expect(leader.type).toEqual(CustomNodeType.EipNode)
+ expect(leader.position).toEqual(position)
+ expect(leader.id).toBeTruthy()
+ expect(leader.data.followerId).toBeTruthy()
+
+ const follower = nodes.find(
+ (n) => n.id === leader.data.followerId
+ )! as FollowerNode
+
+ expect(follower.type).toEqual(CustomNodeType.FollowerNode)
+ expect(follower.position).toEqual({ x: position.x + 200, y: position.y })
+ expect(follower.id).toBeTruthy()
+ expect(follower.data.leaderId).toEqual(leader.id)
})
})
@@ -132,12 +147,12 @@ describe("update node label", () => {
act(() => void updateNodeLabel(STANDARD_INBOUND_ADAPTER, label))
- const target = getNode(STANDARD_INBOUND_ADAPTER)
+ const target = getEipNode(STANDARD_INBOUND_ADAPTER)
expect(target.data.label).toEqual(label)
})
test("update node with duplicated label -> error", () => {
- let target = getNode(STANDARD_INBOUND_ADAPTER)
+ let target = getEipNode(STANDARD_INBOUND_ADAPTER)
const originalLabel = target.data.label
const duplicatedLabel = "test-router"
@@ -145,7 +160,7 @@ describe("update node label", () => {
const result = updateNodeLabel(STANDARD_INBOUND_ADAPTER, duplicatedLabel)
expect(result instanceof Error).toBeTruthy()
- target = getNode(STANDARD_INBOUND_ADAPTER)
+ target = getEipNode(STANDARD_INBOUND_ADAPTER)
expect(target.data.label).toEqual(originalLabel)
})
@@ -651,3 +666,61 @@ test("toggle layout density", () => {
expect(comfortablePositions).not.toEqual(compactPositions)
expect(getLayoutView().density).toEqual("comfortable")
})
+
+describe("Switch Node Selection", () => {
+ test("no pre-selected nodes", () => {
+ act(() => {
+ resetMockStore(standardFlow)
+ })
+
+ let nodes = getNodesView()
+ let selectedNodes = nodes.filter((n) => n.selected)
+ expect(selectedNodes).toHaveLength(0)
+
+ act(() => switchNodeSelection(STANDARD_ROUTER))
+
+ nodes = getNodesView()
+ selectedNodes = nodes.filter((n) => n.selected)
+ expect(selectedNodes).toHaveLength(1)
+ expect(selectedNodes[0].id).toEqual(STANDARD_ROUTER)
+ })
+
+ test("single pre-selected node", () => {
+ const nodesToSelect = new Set([STANDARD_INBOUND_ADAPTER])
+
+ act(() => {
+ resetMockStore(updateSelectedNodes(nodesToSelect))
+ })
+
+ let nodes = getNodesView()
+ let selectedNodes = nodes.filter((n) => n.selected)
+ expect(selectedNodes).toHaveLength(1)
+ expect(selectedNodes[0].id).toEqual(STANDARD_INBOUND_ADAPTER)
+
+ act(() => switchNodeSelection(STANDARD_ROUTER))
+
+ nodes = getNodesView()
+ selectedNodes = nodes.filter((n) => n.selected)
+ expect(selectedNodes).toHaveLength(1)
+ expect(selectedNodes[0].id).toEqual(STANDARD_ROUTER)
+ })
+
+ test("multiple pre-selected nodes", () => {
+ const nodesToSelect = new Set([STANDARD_INBOUND_ADAPTER, STANDARD_FILTER])
+
+ act(() => {
+ resetMockStore(updateSelectedNodes(nodesToSelect))
+ })
+
+ let nodes = getNodesView()
+ let selectedNodes = nodes.filter((n) => n.selected)
+ expect(selectedNodes).toHaveLength(2)
+
+ act(() => switchNodeSelection(STANDARD_ROUTER))
+
+ nodes = getNodesView()
+ selectedNodes = nodes.filter((n) => n.selected)
+ expect(selectedNodes).toHaveLength(1)
+ expect(selectedNodes[0].id).toEqual(STANDARD_ROUTER)
+ })
+})
diff --git a/ui/src/singletons/store/appActions.ts b/ui/src/singletons/store/appActions.ts
index 6be85279..90975c27 100644
--- a/ui/src/singletons/store/appActions.ts
+++ b/ui/src/singletons/store/appActions.ts
@@ -1,29 +1,46 @@
-import { Edge, Position, XYPosition } from "@xyflow/react"
+import { Edge, XYPosition } from "@xyflow/react"
import { produce } from "immer"
import { nanoid } from "nanoid/non-secure"
import {
ChannelMapping,
CustomNode,
+ CustomNodeType,
DYNAMIC_EDGE_TYPE,
- EIP_NODE_TYPE,
+ EipFlowNode,
+ FollowerNode,
isDynamicEdge,
+ isEipNode,
Layout,
} from "../../api/flow"
import { AttributeType } from "../../api/generated/eipComponentDef"
import { EipId } from "../../api/generated/eipFlow"
import { newFlowLayout } from "../../components/layout/layouting"
+import { describeFollower } from "../followerNodeDefs"
import { AppStore, EipConfig, SerializedFlow } from "./api"
import { useAppStore } from "./appStore"
import { childrenDepthTraversal } from "./storeViews"
export const createDroppedNode = (eipId: EipId, position: XYPosition) =>
useAppStore.setState((state) => {
- const node = newNode(position, state.layout.orientation)
+ const nodeDescriptors = generateNodes(eipId, position)
+
+ const nodeConfigs = nodeDescriptors.reduce(
+ (acc, desc) => {
+ acc[desc.node.id] = {
+ attributes: {},
+ children: [],
+ eipId: desc.eipId,
+ }
+ return acc
+ },
+ {} as AppStore["eipConfigs"]
+ )
+
return {
- nodes: [...state.nodes, node],
+ nodes: [...state.nodes, ...nodeDescriptors.map((r) => r.node)],
eipConfigs: {
...state.eipConfigs,
- [node.id]: { attributes: {}, children: [], eipId },
+ ...nodeConfigs,
},
}
})
@@ -32,10 +49,10 @@ export const updateNodeLabel = (id: string, label: string) => {
let error: Error | undefined
useAppStore.setState((state) => {
const updatedNodes = state.nodes.map((node) => {
- if (node.id === id) {
+ if (node.id === id && isEipNode(node)) {
return { ...node, data: { ...node.data, label } }
} else {
- if (node.data.label === label) {
+ if ("label" in node.data && node.data.label === label) {
error = new Error("Node labels must be unique")
}
return node
@@ -193,6 +210,16 @@ export const clearDiagramSelections = () =>
edges: state.edges.map((edge) => ({ ...edge, selected: false })),
}))
+export const switchNodeSelection = (id: string) =>
+ useAppStore.setState((state) => ({
+ nodes: state.nodes.map((node) => {
+ if (node.id === id) {
+ return { ...node, selected: true }
+ }
+ return { ...node, selected: false }
+ }),
+ }))
+
export const importFlowFromJson = (json: string) => {
const flow = JSON.parse(json) as SerializedFlow
importFlowFromObject(flow)
@@ -245,20 +272,60 @@ export const toggleLayoutDensity = () =>
}
})
-const newNode = (position: XYPosition, orientation: Layout["orientation"]) => {
+interface NodeDescriptor {
+ node: CustomNode
+ eipId: EipId
+}
+
+const POSITION_X_OFFSET = 200
+const POSITION_Y_OFFSET = 0
+
+const generateNodes = (
+ eipId: EipId,
+ position: XYPosition
+): NodeDescriptor[] => {
+ const node = newEipNode(position)
+ const descriptors: NodeDescriptor[] = [{ node, eipId }]
+
+ const followerDescriptor = describeFollower(eipId)
+ if (followerDescriptor) {
+ const followerOffset = {
+ x: position.x + POSITION_X_OFFSET,
+ y: position.y + POSITION_Y_OFFSET,
+ }
+
+ const followerNode = newFollowerNode(node.id, followerOffset)
+ node.data.followerId = followerNode.id
+ descriptors.push({ node: followerNode, eipId: followerDescriptor.eipId })
+ }
+
+ return descriptors
+}
+
+const newEipNode = (position: XYPosition) => {
const id = nanoid(10)
- const isHorizontal = orientation === "horizontal"
- const node: CustomNode = {
+ const node: EipFlowNode = {
id: id,
- type: EIP_NODE_TYPE,
+ type: CustomNodeType.EipNode,
position: position,
- targetPosition: isHorizontal ? Position.Left : Position.Top,
- sourcePosition: isHorizontal ? Position.Right : Position.Bottom,
data: {},
}
return node
}
+const newFollowerNode = (leaderId: string, position: XYPosition) => {
+ const id = nanoid(10)
+ const node: FollowerNode = {
+ id: id,
+ type: CustomNodeType.FollowerNode,
+ position: position,
+ data: {
+ leaderId,
+ },
+ }
+ return node
+}
+
const validateDynamicEdgeType = (edge: Edge) => {
if (!isDynamicEdge(edge)) {
throw new Error(
@@ -288,7 +355,7 @@ const isStoreType = (state: unknown): state is AppStore => {
}
// Maintains compatibility with older exported formats
-const importDeprecatedFlow = (flow: SerializedFlow) => {
+const importDeprecatedFlow = (flow: SerializedFlow): Partial => {
const eipConfigs = {} as AppStore["eipConfigs"]
const nodes = flow.nodes.map((node) => {
const { eipId: oldEipId, ...rest } = node.data as { eipId: EipId }
@@ -301,7 +368,7 @@ const importDeprecatedFlow = (flow: SerializedFlow) => {
...node,
data: rest,
}
- })
+ }) as CustomNode[]
return {
nodes,
diff --git a/ui/src/singletons/store/diagramToEipFlow.test.ts b/ui/src/singletons/store/diagramToEipFlow.test.ts
index edfffb24..b2a10eca 100644
--- a/ui/src/singletons/store/diagramToEipFlow.test.ts
+++ b/ui/src/singletons/store/diagramToEipFlow.test.ts
@@ -3,6 +3,7 @@ import { expect, test, vi } from "vitest"
import { useEipFlow } from "./diagramToEipFlow"
import { resetMockStore } from "./storeTestingUtils"
import childBasedRouterFlow from "./testdata/store-initializers/childBasedRouterFlow.json"
+import inboundGatewayFlow from "./testdata/store-initializers/inboundGatewayFlow.json"
import nestedChildFlow from "./testdata/store-initializers/nestedChildFlow.json"
import standardFlow from "./testdata/store-initializers/standardFlow.json"
@@ -34,3 +35,12 @@ test("diagram with deep child nesting", () => {
const { result } = renderHook(() => useEipFlow())
expect(result.current).toMatchSnapshot()
})
+
+test("diagram with inbound-request-reply node", () => {
+ act(() => {
+ resetMockStore(inboundGatewayFlow)
+ })
+
+ const { result } = renderHook(() => useEipFlow())
+ expect(result.current).toMatchSnapshot()
+})
diff --git a/ui/src/singletons/store/diagramToEipFlow.ts b/ui/src/singletons/store/diagramToEipFlow.ts
index 65145b99..f1cdf6b9 100644
--- a/ui/src/singletons/store/diagramToEipFlow.ts
+++ b/ui/src/singletons/store/diagramToEipFlow.ts
@@ -1,10 +1,13 @@
import isDeepEqual from "fast-deep-equal"
import { useStoreWithEqualityFn } from "zustand/traditional"
import {
+ CustomEdge,
CustomNode,
+ CustomNodeType,
DynamicEdge,
- EipNodeData,
+ EipFlowNode,
isDynamicEdge,
+ isFollowerNode,
RouterKey,
} from "../../api/flow"
import {
@@ -21,6 +24,7 @@ import {
lookupContentBasedRouterKeys,
lookupEipComponent,
} from "../eipDefinitions"
+import { describeFollower, describeFollowerFromId } from "../followerNodeDefs"
import { AppStore, EipConfig } from "./api"
import { useAppStore } from "./appStore"
import { childrenBreadthTraversal, getEipId } from "./storeViews"
@@ -45,9 +49,11 @@ const diagramToEipFlow = (state: AppStore): EipFlow => {
const routerChildMap = new Map()
const routerAttrMap = new Map()
- const edges: FlowEdge[] = state.edges.map((edge) => {
- const source = nodeLookup.get(edge.source)?.label || edge.source
- const target = nodeLookup.get(edge.target)?.label || edge.target
+ const allEdges = addHiddenFollowerEdges(state.nodes, state.edges)
+
+ const edges: FlowEdge[] = allEdges.map((edge) => {
+ const source = getNodeId(edge.source, nodeLookup)
+ const target = getNodeId(edge.target, nodeLookup)
const edgeId = `ch-${source}-${target}`
if (isDynamicEdge(edge)) {
@@ -74,7 +80,7 @@ const diagramToEipFlow = (state: AppStore): EipFlow => {
: {}
return {
- id: node.data.label ? node.data.label : node.id,
+ id: getNodeId(node.id, nodeLookup),
eipId: {
...eipId,
namespace: EIP_NAMESPACE_TO_XML_PREFIX[namespace] ?? namespace,
@@ -97,6 +103,49 @@ const diagramToEipFlow = (state: AppStore): EipFlow => {
return { nodes, edges }
}
+const getNodeId = (nodeId: string, nodeLookup: Map) => {
+ const node = nodeLookup.get(nodeId)
+ if (!node) {
+ console.error(`Could not find node with id: ${nodeId}`)
+ return nodeId
+ }
+
+ switch (node.type) {
+ case CustomNodeType.EipNode: {
+ return node.data.label ? node.data.label : node.id
+ }
+ case CustomNodeType.FollowerNode: {
+ const leaderEipId = getEipId(node.data.leaderId)
+ const descriptor = leaderEipId && describeFollower(leaderEipId)
+ if (!descriptor) {
+ return node.id
+ }
+ const leaderNode = nodeLookup.get(node.data.leaderId) as EipFlowNode
+ return descriptor.generateLabel(
+ leaderNode?.data.label ?? node.data.leaderId
+ )
+ }
+ }
+}
+
+const addHiddenFollowerEdges = (nodes: CustomNode[], edges: CustomEdge[]) => {
+ const combinedEdges = [...edges]
+ nodes.forEach((node) => {
+ if (isFollowerNode(node)) {
+ const followerDesc = describeFollowerFromId(node.data.leaderId)
+ if (followerDesc?.hiddenEdges) {
+ const edges = followerDesc.hiddenEdges(
+ node.data.leaderId,
+ node.id
+ ) as CustomEdge[]
+ combinedEdges.push(...edges)
+ }
+ }
+ })
+
+ return combinedEdges
+}
+
const buildChildTree = (
rootId: string,
eipConfigs: AppStore["eipConfigs"]
@@ -124,8 +173,8 @@ const childConfigToNode = (config: EipConfig): EipChildNode => ({
})
const createNodeLookupMap = (nodes: CustomNode[]) => {
- const map = new Map()
- nodes.forEach((node) => map.set(node.id, node.data))
+ const map = new Map()
+ nodes.forEach((node) => map.set(node.id, node))
return map
}
diff --git a/ui/src/singletons/store/reactFlowActions.test.ts b/ui/src/singletons/store/reactFlowActions.test.ts
index 8dc87209..aa9450f2 100644
--- a/ui/src/singletons/store/reactFlowActions.test.ts
+++ b/ui/src/singletons/store/reactFlowActions.test.ts
@@ -7,11 +7,14 @@ import { onConnect, onNodesChange } from "./reactFlowActions"
import { renderAndUnwrapHook, resetMockStore } from "./storeTestingUtils"
import { getEdgesView, getEipId, getNodesView } from "./storeViews"
import disconnectedFlow from "./testdata/store-initializers/disconnectedFlow.json"
+import inboundGatewayFlow from "./testdata/store-initializers/inboundGatewayFlow.json"
import standardFlow from "./testdata/store-initializers/standardFlow.json"
vi.mock("zustand")
const STANDARD_FILE_ADAPTER_ID = "MrMneIdthg"
+const LEADER_NODE_ID = "_k0Z45PtEc"
+const FOLLOWER_NODE_ID = "hF-dVMmHqZ"
beforeEach(() => {
act(() => {
@@ -19,30 +22,103 @@ beforeEach(() => {
})
})
-describe("onNodesChange", () => {
- test("top-level config and all child configs are removed when node is deleted", () => {
- // assert configs exist before removing node
- expect(getEipId(STANDARD_FILE_ADAPTER_ID)).not.toBeUndefined()
- const children = renderAndUnwrapHook(() =>
- useGetEnabledChildren(STANDARD_FILE_ADAPTER_ID)
+test("onNodesChange node removal -> top-level config and all child configs are removed", () => {
+ // assert configs exist before removing node
+ expect(getEipId(STANDARD_FILE_ADAPTER_ID)).toBeDefined()
+ const children = renderAndUnwrapHook(() =>
+ useGetEnabledChildren(STANDARD_FILE_ADAPTER_ID)
+ )
+ expect(children).toHaveLength(1)
+ const childId = children[0]
+ expect(getEipId(childId)).not.toBeUndefined()
+
+ const change: NodeRemoveChange = {
+ id: STANDARD_FILE_ADAPTER_ID,
+ type: "remove",
+ }
+ act(() => onNodesChange([change]))
+
+ const checkDeleted = getNodesView().find(
+ (n) => n.id === STANDARD_FILE_ADAPTER_ID
+ )
+ expect(checkDeleted).toBeUndefined()
+
+ expect(getEipId(STANDARD_FILE_ADAPTER_ID)).toBeUndefined()
+ expect(getEipId(childId)).toBeUndefined()
+})
+
+describe("onNodesChange remove leader/follower nodes", () => {
+ beforeEach(() => {
+ act(() => {
+ resetMockStore(inboundGatewayFlow)
+ })
+
+ // assert nodes exist
+ expect(getNode(LEADER_NODE_ID)).toBeDefined()
+ expect(getNode(FOLLOWER_NODE_ID)).toBeDefined()
+
+ // assert node configs exist
+ expect(getEipId(LEADER_NODE_ID)).toBeDefined()
+ expect(getEipId(FOLLOWER_NODE_ID)).toBeDefined()
+ })
+
+ test("delete leader node -> follower is also deleted", () => {
+ const change: NodeRemoveChange = {
+ id: LEADER_NODE_ID,
+ type: "remove",
+ }
+
+ act(() => onNodesChange([change]))
+
+ const checkDeleted = getNodesView().filter(
+ (n) => n.id === LEADER_NODE_ID || n.id === FOLLOWER_NODE_ID
)
- expect(children).toHaveLength(1)
- const childId = children[0]
- expect(getEipId(childId)).not.toBeUndefined()
+ expect(checkDeleted).toHaveLength(0)
+
+ expect(getEipId(LEADER_NODE_ID)).toBeUndefined()
+ expect(getEipId(FOLLOWER_NODE_ID)).toBeUndefined()
+ })
+
+ test("delete follower node -> leader is also deleted", () => {
const change: NodeRemoveChange = {
- id: STANDARD_FILE_ADAPTER_ID,
+ id: FOLLOWER_NODE_ID,
type: "remove",
}
+
act(() => onNodesChange([change]))
- const checkDeleted = getNodesView().find(
- (n) => n.id === STANDARD_FILE_ADAPTER_ID
+ const checkDeleted = getNodesView().filter(
+ (n) => n.id === LEADER_NODE_ID || n.id === FOLLOWER_NODE_ID
)
- expect(checkDeleted).toBeUndefined()
- expect(getEipId(STANDARD_FILE_ADAPTER_ID)).toBeUndefined()
- expect(getEipId(childId)).toBeUndefined()
+ expect(checkDeleted).toHaveLength(0)
+
+ expect(getEipId(LEADER_NODE_ID)).toBeUndefined()
+ expect(getEipId(FOLLOWER_NODE_ID)).toBeUndefined()
+ })
+
+ test("delete leader node as part of multiple removals -> follower is also deleted", () => {
+ const transformerId = "QvmTf6Jm4O"
+
+ const changes: NodeRemoveChange[] = [
+ {
+ id: LEADER_NODE_ID,
+ type: "remove",
+ },
+ {
+ id: transformerId,
+ type: "remove",
+ },
+ ]
+
+ act(() => onNodesChange(changes))
+
+ expect(getNodesView()).toHaveLength(0)
+
+ expect(getEipId(LEADER_NODE_ID)).toBeUndefined()
+ expect(getEipId(FOLLOWER_NODE_ID)).toBeUndefined()
+ expect(getEipId(transformerId)).toBeUndefined()
})
})
@@ -100,3 +176,12 @@ describe("onConnect", () => {
expect(data.mapping.matcher.name).toEqual("value")
})
})
+
+const getNode = (id: string) => {
+ const nodes = getNodesView()
+ const target = nodes.find((n) => n.id === id)
+ if (!target) {
+ throw new Error(`Could not find node with id: ${id}`)
+ }
+ return target
+}
diff --git a/ui/src/singletons/store/reactFlowActions.ts b/ui/src/singletons/store/reactFlowActions.ts
index 1f0dfdff..6ab412c2 100644
--- a/ui/src/singletons/store/reactFlowActions.ts
+++ b/ui/src/singletons/store/reactFlowActions.ts
@@ -7,7 +7,12 @@ import {
NodeChange,
NodeRemoveChange,
} from "@xyflow/react"
-import { CustomEdge, CustomNode, DYNAMIC_EDGE_TYPE } from "../../api/flow"
+import {
+ CustomEdge,
+ CustomNode,
+ CustomNodeType,
+ DYNAMIC_EDGE_TYPE,
+} from "../../api/flow"
import { EipComponent } from "../../api/generated/eipComponentDef"
import {
CHANNEL_ATTR_NAME,
@@ -20,11 +25,23 @@ import { childrenDepthTraversal, getEipId } from "./storeViews"
export const onNodesChange = (changes: NodeChange[]) =>
useAppStore.setState((state) => {
+ const removals: NodeRemoveChange[] = changes.filter(
+ (c) => c.type === "remove"
+ )
+
+ const followerRemovals = resolveFollowerRemovals(state.nodes, removals)
+
+ const allChanges = [...changes, ...followerRemovals]
+
const updates: Partial = {
- nodes: applyNodeChanges(changes, state.nodes),
+ nodes: applyNodeChanges(allChanges, state.nodes),
}
- const updatedEipConfigs = removeDeletedNodeConfigs(state, changes)
+ const updatedEipConfigs = removeDeletedNodeConfigs(state, [
+ ...removals,
+ ...followerRemovals,
+ ])
+
if (updatedEipConfigs) {
updates.eipConfigs = updatedEipConfigs
}
@@ -51,15 +68,64 @@ export const onConnect = (connection: Connection) =>
}
})
-const removeDeletedNodeConfigs = (state: AppStore, changes: NodeChange[]) => {
- const deletes: NodeRemoveChange[] = changes.filter((c) => c.type === "remove")
+/*
+Assumption 1: Deleting a leader node deletes its follower
+Assumption 2: Deleting a follower node deletes its leader
+
+Returns a list of additional NodeRemoveChanges that need to be applied
+*/
+const resolveFollowerRemovals = (
+ nodes: CustomNode[],
+ changes: NodeRemoveChange[]
+) => {
+ const nodeLookup = createNodeLookupMap(nodes)
+ const newRemovalIds = new Set()
+
+ changes.forEach((change) => {
+ const node = nodeLookup.get(change.id)
+ if (!node) {
+ throw new Error(
+ `attempting to delete a non-existent node (id: ${change.id})`
+ )
+ }
- if (deletes.length === 0) {
+ switch (node.type) {
+ case CustomNodeType.EipNode: {
+ node.data.followerId && newRemovalIds.add(node.data.followerId)
+ break
+ }
+ case CustomNodeType.FollowerNode: {
+ node.data.leaderId && newRemovalIds.add(node.data.leaderId)
+ break
+ }
+ }
+ })
+
+ return [...newRemovalIds].map(
+ (id) =>
+ ({
+ type: "remove",
+ id,
+ }) as NodeRemoveChange
+ )
+}
+
+const createNodeLookupMap = (nodes: CustomNode[]) => {
+ const map = new Map()
+ nodes.forEach((node) => map.set(node.id, node))
+ return map
+}
+
+const removeDeletedNodeConfigs = (
+ state: AppStore,
+ removals: NodeRemoveChange[]
+) => {
+ if (removals.length === 0) {
return null
}
const updatedConfigs = { ...state.eipConfigs }
- deletes.forEach((c) => removeNestedConfigs(c.id, updatedConfigs))
+ removals.forEach((c) => removeNestedConfigs(c.id, updatedConfigs))
return updatedConfigs
}
diff --git a/ui/src/singletons/store/testdata/store-initializers/inboundGatewayFlow.json b/ui/src/singletons/store/testdata/store-initializers/inboundGatewayFlow.json
new file mode 100644
index 00000000..3be924b7
--- /dev/null
+++ b/ui/src/singletons/store/testdata/store-initializers/inboundGatewayFlow.json
@@ -0,0 +1,71 @@
+{
+ "nodes": [
+ {
+ "id": "_k0Z45PtEc",
+ "type": "eipNode",
+ "position": { "x": 0, "y": 0 },
+ "data": { "followerId": "hF-dVMmHqZ", "label": "testIn" },
+ "measured": { "width": 109, "height": 116 },
+ "selected": false,
+ "dragging": false,
+ "targetPosition": "left",
+ "sourcePosition": "right"
+ },
+ {
+ "id": "hF-dVMmHqZ",
+ "type": "followerNode",
+ "position": { "x": 358, "y": 12 },
+ "data": { "leaderId": "_k0Z45PtEc" },
+ "measured": { "width": 114, "height": 92 },
+ "selected": false,
+ "dragging": false,
+ "targetPosition": "left",
+ "sourcePosition": "right"
+ },
+ {
+ "id": "QvmTf6Jm4O",
+ "type": "eipNode",
+ "position": { "x": 184, "y": 13 },
+ "data": {},
+ "measured": { "width": 99, "height": 90 },
+ "selected": false,
+ "dragging": false,
+ "targetPosition": "left",
+ "sourcePosition": "right"
+ }
+ ],
+ "edges": [
+ {
+ "source": "_k0Z45PtEc",
+ "sourceHandle": "output",
+ "target": "QvmTf6Jm4O",
+ "targetHandle": "input",
+ "id": "xy-edge___k0Z45PtEcoutput-QvmTf6Jm4Oinput"
+ },
+ {
+ "source": "QvmTf6Jm4O",
+ "sourceHandle": "output",
+ "target": "hF-dVMmHqZ",
+ "targetHandle": "input",
+ "id": "xy-edge__QvmTf6Jm4Ooutput-hF-dVMmHqZinput"
+ }
+ ],
+ "eipConfigs": {
+ "_k0Z45PtEc": {
+ "attributes": {},
+ "children": [],
+ "eipId": { "namespace": "http", "name": "inbound-gateway" }
+ },
+ "hF-dVMmHqZ": {
+ "attributes": {},
+ "children": [],
+ "eipId": { "namespace": "integration", "name": "channel" }
+ },
+ "QvmTf6Jm4O": {
+ "attributes": {},
+ "children": [],
+ "eipId": { "namespace": "integration", "name": "transformer" }
+ }
+ },
+ "version": "1.0"
+}