<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.springframework.org/schema/integration/jms"
		xmlns:xsd="http://www.w3.org/2001/XMLSchema"
		xmlns:beans="http://www.springframework.org/schema/beans"
		xmlns:tool="http://www.springframework.org/schema/tool"
		xmlns:integration="http://www.springframework.org/schema/integration"
		targetNamespace="http://www.springframework.org/schema/integration/jms"
		elementFormDefault="qualified"
		attributeFormDefault="unqualified">

	<xsd:import namespace="http://www.springframework.org/schema/beans"/>
	<xsd:import namespace="http://www.springframework.org/schema/tool"/>
	<xsd:import namespace="http://www.springframework.org/schema/integration"
			schemaLocation="http://www.springframework.org/schema/integration/spring-integration-2.1.xsd"/>

	<xsd:annotation>
		<xsd:documentation><![CDATA[
	Defines the configuration elements for Spring Integration's JMS adapters.
		]]></xsd:documentation>
	</xsd:annotation>

	<xsd:element name="channel">
		<xsd:annotation>
			<xsd:documentation>
	Defines a Message Channel that is backed by a JMS Queue.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="channelType">
					<xsd:attribute name="queue" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	Reference to a JMS Queue. Either this attribute or the 'queue-name'
	must be provided, but only one.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="message-driven" type="xsd:boolean" default="true">
						<xsd:annotation>
							<xsd:documentation>
	Specifies whether this channel should be Message-Driven. The value is "true" by default.
	Set to "false" if this channel should be pollable.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="queue-name" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	Name of a JMS Queue to be resolved by this channel's DestinationResolver.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="publish-subscribe-channel">
		<xsd:annotation>
			<xsd:documentation>
	Defines a Message Channel that is backed by a JMS Topic.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="channelType">
					<xsd:attribute name="topic" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	Reference to a JMS Topic. Either this attribute or the 'topic-name'
	must be provided, but only one.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="topic-name" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	Name of a JMS Topic to be resolved by this channel's DestinationResolver.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="durable" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	Boolean value indicating whether the Topic subscription is durable.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="client-id" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	The JMS client id. Should be specified when using durable subscriptions.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="subscription" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	The name for the durable subscription, if any.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:complexType name="channelType">
		<xsd:annotation>
			<xsd:documentation><![CDATA[
	Base type for JMS Destination backed Message Channels (either 'channel' for a
	Queue-backed channel or 'publish-subscribe-channel' for a Topic-backed channel).
			]]></xsd:documentation>
			<xsd:appinfo>
				<tool:annotation>
					<tool:exports type="org.springframework.integration.jms.AbstractJmsChannel"/>
				</tool:annotation>
			</xsd:appinfo>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="interceptors" type="integration:channelInterceptorsType" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	A list of ChannelInterceptor instances to be applied to this channel.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:string" use="required">
			<xsd:annotation>
				<xsd:documentation>
	ID for this channel. Required.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>		
		<xsd:attribute name="connection-factory" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	Reference to a JMS ConnectionFactory. If none is provided, the default
	bean name for the reference will be "connectionFactory".
				</xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="javax.jms.ConnectionFactory"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="destination-resolver" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	A reference to the DestinationResolver strategy for resolving destination names.
	Default is a DynamicDestinationResolver, using the JMS provider's queue/topic
	name resolution. Alternatively, specify a reference to a JndiDestinationResolver
	(typically in a J2EE environment).
				]]></xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.jms.support.destination.DestinationResolver"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="container-type" default="default">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	The type of this listener container: "default" or "simple", choosing
	between DefaultMessageListenerContainer and SimpleMessageListenerContainer.
				]]></xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:restriction base="xsd:NMTOKEN">
					<xsd:enumeration value="default"/>
					<xsd:enumeration value="simple"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="container-class" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	A custom listener container implementation class as fully qualified class name.
	Default is Spring's 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).
				]]></xsd:documentation>
				<xsd:appinfo>
					<tool:annotation>
						<tool:expected-type type="java.lang.Class"/>
						<tool:assignable-to type="org.springframework.jms.listener.AbstractMessageListenerContainer"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="receive-timeout" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	Timeout for the container's consumers if messsage-driven is TRUE, or
	timeout for receive calls on the template if message-driven is FALSE.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="task-executor" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	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's receive thread by default.
				]]></xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="java.util.concurrent.Executor"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="message-converter" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	A reference to the MessageConverter strategy for converting between JMS Messages
	and the Spring Integration Message payloads. Default is a SimpleMessageConverter.
				]]></xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.jms.support.converter.MessageConverter"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="error-handler" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	A reference to an ErrorHandler strategy for handling any uncaught Exceptions
	that may occur during the execution of the underlying MessageListener.
				]]></xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.util.ErrorHandler"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="selector" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	The JMS message selector for this channel's underlying MessageListener.
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="cache" default="auto">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	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).
				]]></xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:restriction base="xsd:NMTOKEN">
					<xsd:enumeration value="none"/>
					<xsd:enumeration value="connection"/>
					<xsd:enumeration value="session"/>
					<xsd:enumeration value="consumer"/>
					<xsd:enumeration value="auto"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="acknowledge" default="transacted">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	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".
				]]></xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:restriction base="xsd:NMTOKEN">
					<xsd:enumeration value="auto"/>
					<xsd:enumeration value="client"/>
					<xsd:enumeration value="dups-ok"/>
					<xsd:enumeration value="transacted"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="transaction-manager" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	A reference to an external PlatformTransactionManager (typically an
	XA-based transaction coordinator, e.g. Spring's JtaTransactionManager).
	If not specified, native acknowledging will be used (see "acknowledge" attribute).
				]]></xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.transaction.PlatformTransactionManager"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="concurrency" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	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.
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="prefetch" type="xsd:int">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	The maximum number of messages to load into a single session.
	Note that raising this number might lead to starvation of concurrent consumers!
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="auto-startup" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Boolean value indicating whether this channel's listener container should start automatically.
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="phase" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	The lifecycle phase within which this channel's listener container should start and stop.
	The lower the value the earlier this container will start and the later it will stop. The
	default is Integer.MAX_VALUE meaning the container will start as late as possible
	and stop as soon as possible.
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>

	<xsd:element name="message-driven-channel-adapter">
		<xsd:annotation>
			<xsd:documentation>
	Defines a JMS Message-Driven inbound Channel Adapter.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="jmsMessageDrivenInboundAdapterType">
					<xsd:attribute name="destination" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	A reference to a javax.jms.Destination by bean name. As an alternative to a bean
	reference, use 'destination-name' and 'pub-sub-domain' which will rely upon the
	DestinationResolver strategy (DynamicDestinationResolver by default). 
							</xsd:documentation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="javax.jms.Destination"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="destination-name" type="xsd:string"/>
					<xsd:attribute name="pub-sub-domain" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	The boolean property used to configure the JmsTemplate with knowledge of what JMS domain is being used. By default the value of this property is 'false'', 
	indicating that the point-to-point domain, Queues, will be used. This property used by JmsTemplate determines the behavior of dynamic destination resolution 
	via implementations of the DestinationResolver interface.			
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="subscription-durable" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	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).	
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>					
					<xsd:attribute name="durable-subscription-name" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	The name of a durable subscription to create. To be applied in case of a topic (pub-sub domain) with subscription durability
	activated. The durable subscription name needs to be unique within this client's JMS client id. Default is the class name of the
	specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed
	for each durable subscription.	
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="client-id" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	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't already assigned one.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>					
					<xsd:attribute name="channel" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.integration.MessageChannel"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="header-mapper" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.integration.jms.JmsHeaderMapper"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="extract-payload" type="xsd:string" default="true"/>
					<xsd:attribute name="send-timeout" type="xsd:string"/>
					<xsd:attribute name="error-channel" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.integration.MessageChannel"/>
								</tool:annotation>
							</xsd:appinfo>
							<xsd:documentation>
								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.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="transaction-manager" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.transaction.PlatformTransactionManager"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					
					<xsd:attribute name="receive-timeout" type="xsd:string"/>
					
					<xsd:attributeGroup ref="dmlcAttributeGroup"/>
					
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="inbound-channel-adapter">
		<xsd:annotation>
			<xsd:documentation>
	Defines an inbound Channel Adapter for polling a JMS Destination.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="jmsInboundAdapterType">
					<xsd:sequence>
						<xsd:element ref="integration:poller" minOccurs="0" maxOccurs="1"/>
					</xsd:sequence>
					<xsd:attribute name="destination" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	A reference to a javax.jms.Destination by bean name. As an alternative to a bean
	reference, use 'destination-name' and 'pub-sub-domain' which will rely upon the
	DestinationResolver strategy (DynamicDestinationResolver by default). 
							</xsd:documentation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="javax.jms.Destination"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="destination-name" type="xsd:string"/>
					<xsd:attribute name="pub-sub-domain" type="xsd:string"/>
					<xsd:attribute name="channel" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.integration.MessageChannel"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="header-mapper" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.integration.jms.JmsHeaderMapper"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="extract-payload" type="xsd:string" default="true"/>
					<xsd:attribute name="receive-timeout" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	Timeout for receive calls on the template.
	NOTE: for JmsTemplate, 0 means indefinite while -1 means no-wait.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="jms-template" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.jms.core.JmsTemplate"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="inbound-gateway">
		<xsd:annotation>
			<xsd:documentation>
	Defines an inbound JMS-based Messaging Gateway.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="jmsMessageDrivenInboundAdapterType">
					<xsd:attribute name="request-destination" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	A reference to a javax.jms.Destination by bean name. As an alternative to a bean
	reference, use 'request-destination-name' and 'request-pub-sub-domain' which will rely
	upon the DestinationResolver strategy (DynamicDestinationResolver by default). 
							</xsd:documentation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="javax.jms.Destination"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="request-destination-name" type="xsd:string"/>
					<xsd:attribute name="request-pub-sub-domain" type="xsd:string"/>
					<xsd:attribute name="default-reply-destination" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	A reference to a javax.jms.Destination by bean name. As an alternative to a bean
	reference, use either 'default-reply-queue-name' or 'default-reply-topic-name'  which
	will rely upon the DestinationResolver strategy (DynamicDestinationResolver by default). 
							</xsd:documentation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="javax.jms.Destination"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="default-reply-queue-name" type="xsd:string"/>
					<xsd:attribute name="default-reply-topic-name" type="xsd:string"/>
					<xsd:attribute name="correlation-key" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
								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.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="header-mapper" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.integration.jms.JmsHeaderMapper"/>
								</tool:annotation>
								<xsd:documentation>
								Allows to specify custom implementation of JmsHeaderMapper to map Message Headers to JMS Message. 
								</xsd:documentation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="extract-request-payload" type="xsd:string" default="true"/>
					<xsd:attribute name="extract-reply-payload" type="xsd:string" default="true"/>
					<xsd:attribute name="request-channel" type="xsd:string" use="required">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.integration.MessageChannel"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="request-timeout" type="xsd:string"/>
					<xsd:attribute name="reply-channel" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.integration.MessageChannel"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="reply-timeout" type="xsd:string"/>
					<xsd:attribute name="error-channel" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.integration.MessageChannel"/>
								</tool:annotation>
							</xsd:appinfo>
							<xsd:documentation>
								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.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="transaction-manager" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.transaction.PlatformTransactionManager"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="subscription-durable" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	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).	
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>					
					<xsd:attribute name="durable-subscription-name" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	The name of a durable subscription to create. To be applied in case of a topic (pub-sub domain) with subscription durability
	activated. The durable subscription name needs to be unique within this client's JMS client id. Default is the class name of the
	specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed
	for each durable subscription.	
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="client-id" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	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't already assigned one.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="receive-timeout" type="xsd:string"/>
					
					<xsd:attributeGroup ref="dmlcAttributeGroup"/>
					
					<xsd:attribute name="reply-time-to-live" type="xsd:string"/>
					<xsd:attribute name="reply-priority" type="xsd:string"/>
					<xsd:attribute name="reply-delivery-persistent" type="xsd:string"/>
					<xsd:attribute name="explicit-qos-enabled-for-replies" type="xsd:string"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="outbound-gateway">
		<xsd:annotation>
			<xsd:documentation>
	Defines an outbound JMS-based Messaging Gateway.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="integration:poller" minOccurs="0" maxOccurs="1"/>
			</xsd:sequence>
			<xsd:attribute name="id" type="xsd:string"/>
			<xsd:attribute name="request-channel" type="xsd:string">
				<xsd:annotation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="org.springframework.integration.MessageChannel"/>
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="reply-channel" type="xsd:string">
				<xsd:annotation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="org.springframework.integration.MessageChannel"/>
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="receive-timeout" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	Timeout for the JMS MessageConsumer to receive the JMS reply Message. Default is 5 seconds. 
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="reply-timeout" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	Timeout for sending the mapped integration Message to this gateway's reply-channel. Default is indefinite.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="request-destination" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	A reference to a javax.jms.Destination by bean name. As an alternative to a bean
	reference, use 'request-destination-name' and 'request-pub-sub-domain' which will rely
	upon the DestinationResolver strategy (DynamicDestinationResolver by default). This
	attribute is mutually exclusive with 'request-destination-name' and
	'request-destination-expression'.
					</xsd:documentation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="javax.jms.Destination"/>
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="request-destination-name" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	Name of a destination to which request messages will be sent. This name will be handled
	by this gateway's DestinationResolver. This attribute is mutually exclusive with
	'request-destination' and 'request-destination-expression'.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="request-destination-expression" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	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's DestinationResolver.
	This attribute is mutually exclusive with 'request-destination' and 'request-destination-name'.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>			
			<xsd:attribute name="request-pub-sub-domain" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	When resolving a request destination name (rather than having a 'request-destination' reference),
	a true value here specifies that the DestinationResolver should resolve Topics rather than Queues.
	Default is false.  
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="reply-destination" type="xsd:string">
				<xsd:annotation>
							<xsd:documentation>
	A reference to a javax.jms.Destination by bean name. As an alternative to a bean
	reference, use 'reply-destination-name' and 'reply-pub-sub-domain' which will rely
	upon the DestinationResolver strategy (DynamicDestinationResolver by default). 
							</xsd:documentation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="javax.jms.Destination"/>
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="reply-destination-name" type="xsd:string"/>
			<xsd:attribute name="reply-pub-sub-domain" type="xsd:string"/>
			<xsd:attribute name="correlation-key" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
						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's
						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.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="destination-resolver" type="xsd:string">
				<xsd:annotation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="org.springframework.jms.support.destination.DestinationResolver"/>
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="connection-factory" type="xsd:string" default="connectionFactory">
				<xsd:annotation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="javax.jms.ConnectionFactory"/>
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="message-converter" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	A reference to the MessageConverter strategy for converting between JMS Messages
	and the Spring Integration Message payloads. Default is a SimpleMessageConverter.
				]]></xsd:documentation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="org.springframework.jms.support.converter.MessageConverter"/>
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="header-mapper" type="xsd:string">
				<xsd:annotation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="org.springframework.integration.jms.JmsHeaderMapper"/>
						</tool:annotation>
						<xsd:documentation>
						Allows to specify custom implementation of JmsHeaderMapper to map Message Headers to JMS Message. 
						</xsd:documentation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="extract-request-payload" type="xsd:string" default="true"/>
			<xsd:attribute name="extract-reply-payload" type="xsd:string" default="true"/>
			<xsd:attribute name="delivery-mode" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	[DEPRECATED - use delivery-persistent attribute instead]
	A reference to the MessageConverter strategy for converting between JMS Messages
	and the Spring Integration Message payloads. Default is a SimpleMessageConverter.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="delivery-persistent" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	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 'explicit-qos-enabled' is true.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="time-to-live" type="xsd:string"/>
			<xsd:attribute name="priority" type="xsd:string"/>
			<xsd:attribute name="explicit-qos-enabled" type="xsd:string"/>
			<xsd:attribute name="auto-startup" type="xsd:string" default="true"/>
			<xsd:attribute name="order" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
	Specifies the order for invocation when this gateway is connected as a
	subscriber to a SubscribableChannel.
					]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="outbound-channel-adapter">
		<xsd:annotation>
			<xsd:documentation>
	Defines an outbound JMS Message-sending Channel Adapter.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="jmsAdapterType">
					<xsd:sequence>
						<xsd:element ref="integration:poller" minOccurs="0" maxOccurs="1"/>
					</xsd:sequence>
					<xsd:attribute name="destination" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	A reference to a javax.jms.Destination by bean name. As an alternative to a bean
	reference, use 'destination-name' and 'pub-sub-domain' which will rely upon the
	DestinationResolver strategy (DynamicDestinationResolver by default). This attribute
	is mutually exclusive with 'destination-name' and 'destination-expression'.
							</xsd:documentation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="javax.jms.Destination"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="destination-name" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	Name of the destination to which JMS Messages will be sent. This will be passed to the
	adapter's DestinationResolver. This attribute is mutually exclusive with 'destination'
	and 'destination-expression'.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="destination-expression" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	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's 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 'destination' and 'destination-name'.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="pub-sub-domain" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	If true, specifies that destination names should resolve to Topics rather than Queues. Default is false.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="channel" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.integration.MessageChannel"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="header-mapper" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.integration.jms.JmsHeaderMapper"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="extract-payload" type="xsd:string" default="true"/>
					<xsd:attribute name="jms-template" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.jms.core.JmsTemplate"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="delivery-persistent" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	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 'explicit-qos-enabled' is true.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="time-to-live" type="xsd:string"/>
					<xsd:attribute name="priority" type="xsd:string"/>
					<xsd:attribute name="explicit-qos-enabled" type="xsd:string"/>
					<xsd:attribute name="order" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Specifies the order for invocation when this adapter is connected as a
	subscriber to a SubscribableChannel.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:complexType name="jmsMessageDrivenInboundAdapterType">
		<xsd:annotation>
			<xsd:documentation>
	Common configuration for message-driven inbound JMS-based adapters.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="jmsInboundAdapterType">
				<xsd:attribute name="container" type="xsd:string">
					<xsd:annotation>
						<xsd:appinfo>
							<tool:annotation kind="ref">
								<tool:expected-type type="org.springframework.jms.listener.AbstractMessageListenerContainer"/>
							</tool:annotation>
						</xsd:appinfo>
					</xsd:annotation>
				</xsd:attribute>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="jmsInboundAdapterType">
		<xsd:annotation>
			<xsd:documentation>
	Common configuration for inbound JMS-based adapters.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="jmsAdapterType">
				<xsd:attribute name="acknowledge">
					<xsd:annotation>
						<xsd:documentation><![CDATA[
	The native JMS acknowledge mode: "auto", "client", "dups-ok" or "transacted".
	The latter effectively activates a locally transacted Session.
						]]></xsd:documentation>
					</xsd:annotation>
					<xsd:simpleType>
						<xsd:restriction base="xsd:NMTOKEN">
							<xsd:enumeration value="auto"/>
							<xsd:enumeration value="client"/>
							<xsd:enumeration value="dups-ok"/>
							<xsd:enumeration value="transacted"/>
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:attribute>
				<xsd:attribute name="selector" type="xsd:string">
					<xsd:annotation>
						<xsd:documentation>
	A JMS Message Selector expression.
						</xsd:documentation>
					</xsd:annotation>
				</xsd:attribute>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:element name="header-enricher">
		<xsd:complexType>
			<xsd:annotation>
				<xsd:documentation>
	Defines a Transformer for adding statically configured JMS Headers.
				</xsd:documentation>
			</xsd:annotation>
			<xsd:complexContent>
				<xsd:extension base="transformerType">
					<xsd:choice minOccurs="1" maxOccurs="unbounded">
						<xsd:element name="reply-to" type="refOnlyHeaderType">
							<xsd:annotation>
								<xsd:documentation>
	The ReplyTo Destination for the JMS Message.
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="correlation-id" type="refOrValueHeaderType">
							<xsd:annotation>
								<xsd:documentation>
	The Correlation ID for the JMS Message.
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:choice>
					<xsd:attribute name="default-overwrite">
						<xsd:annotation>
							<xsd:documentation>
	Specify the default boolean value for whether to overwrite existing header values. This will only take effect for
	sub-elements that do not provide their own 'overwrite' attribute. If the 'default-overwrite' attribute is not
	provided, then the specified header values will NOT overwrite any existing ones with the same header names. 
							</xsd:documentation>
						</xsd:annotation>
						<xsd:simpleType>
							<xsd:union memberTypes="xsd:boolean xsd:string"/>
						</xsd:simpleType> 
					</xsd:attribute>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:complexType name="refOrValueHeaderType">
		<xsd:complexContent>
			<xsd:extension base="refOnlyHeaderType">
				<xsd:attribute name="value" type="xsd:string" />
				<xsd:attribute name="expression" type="xsd:string" />
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="refOnlyHeaderType">
		<xsd:attribute name="ref" type="xsd:string" />
		<xsd:attribute name="overwrite">
			<xsd:annotation>
				<xsd:documentation>
	Boolean value to indicate whether this header value should overwrite an existing header value for the same name.
				</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:union memberTypes="xsd:boolean xsd:string"/>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="jmsAdapterType">
		<xsd:annotation>
			<xsd:documentation>
	Common configuration for JMS-based adapters.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="id" type="xsd:string"/>
		<xsd:attribute name="connection-factory" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="javax.jms.ConnectionFactory"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="destination-resolver" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.jms.support.destination.DestinationResolver"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="message-converter" type="xsd:string">
			<xsd:annotation>
			<xsd:documentation><![CDATA[
	A reference to the MessageConverter strategy for converting between JMS Messages
	and the Spring Integration Message payloads. Default is a SimpleMessageConverter.
				]]></xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.jms.support.converter.MessageConverter"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="auto-startup" type="xsd:string" default="true"/>
	</xsd:complexType>

	<xsd:complexType name="transformerType">
		<xsd:attribute name="id" type="xsd:string"/>
		<xsd:attribute name="input-channel" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.integration.MessageChannel"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="output-channel" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.integration.MessageChannel"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>
	
	<xsd:attributeGroup name="dmlcAttributeGroup">
		<xsd:attribute name="concurrent-consumers" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					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
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="max-concurrent-consumers" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					 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.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="cache-level" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					 Specify the level of caching that this listener container is allowed to apply:
					 CACHE_NONE = 0
					 CACHE_CONNECTION = 1
					 CACHE_SESSION = 2
					 CACHE_CONSUMER = 3
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="max-messages-per-task" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
				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 
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		
		<xsd:attribute name="recovery-interval" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
				Interval in miliseconds between the recovery attempts
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="idle-consumer-limit" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
				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.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="idle-task-execution-limit" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
				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't
					receive a message. 
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		
	</xsd:attributeGroup>

</xsd:schema>
