<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.springframework.org/schema/integration/amqp"
	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/amqp"
	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:element name="outbound-channel-adapter">
		<xsd:annotation>
			<xsd:documentation>
	Configures an endpoint that will publish an AMQP Message to the provided Exchange.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:attribute name="id" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	Unique ID for this adapter.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="channel" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	Message Channel to which Messages should be sent in order to have them converted and published to an AMQP Exchange.
	If this attribute is not provided, the ID will be used to create a new DirectChannel, and then instead of using that
	ID as the bean name of the EventDrivenConsumer instance that hosts the MessageHandler responsible for publishing the
	AMQP Messages, that EventDrivenConsumer's bean name will be the ID plus the added suffix: ".adapter"
					</xsd:documentation>
					<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="exchange-name" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	The fixed name of the AMQP Exchange to which Messages should be sent. If not provided, Messages will be sent to the default, no-name Exchange.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="exchange-name-expression" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	The exchange name to use when sending Messages evaluated as an expression on the message (e.g. 'headers.exchange'). By default, this will be an emtpy String.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="routing-key" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	The fixed routing-key to use when sending Messages. By default, this will be an empty String.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="routing-key-expression" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	The routing-key to use when sending Messages evaluated as an expression on the message (e.g. 'payload.key'). By default, this will be an empty String.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="amqp-template" type="xsd:string">
				<xsd:annotation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="org.springframework.amqp.core.AmqpTemplate" />
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="order" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	The order for this consumer when multiple consumers are registered thereby enabling load-balancing and/or failover. 
					</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.mapping.HeaderMapper" />
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="mapped-request-headers" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
Comma-separated list of names of AMQP Headers to be mapped from the AMQP request into the MessageHeaders.
This can only be provided if the 'header-mapper' 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").
						]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="inbound-channel-adapter">
		<xsd:annotation>
			<xsd:documentation>
	Configures an endpoint that will receive AMQP Messages sent to a given queue and then forward those messages to a Message Channel.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="inboundType">
					<xsd:attribute name="channel" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	Message Channel to which converted Messages should be sent. If this attribute is not provided, the ID will
	be used to create a new DirectChannel, and then instead of using that ID as the bean name of the Channel Adapter
	instance, the bean name will be the ID plus the added suffix: ".adapter"
							</xsd:documentation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.integration.MessageChannel"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="outbound-gateway">
		<xsd:annotation>
			<xsd:documentation>
	Configures a gateway that will publish an AMQP Message to the provided Exchange
	and expect a reply Message.
            </xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:attribute name="id" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	Unique ID for this gateway.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="request-channel" use="required" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	Message Channel to which Messages should be sent in order to have them converted and published to an AMQP Exchange.
					</xsd:documentation>
					<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:documentation>
	Message Channel to which replies should be sent after being received from an AQMP Queue and converted.
					</xsd:documentation>
					<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="exchange-name" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	The name of the AMQP Exchange to which Messages should be sent. If not provided, Messages will be sent to the default, no-name Exchange.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="exchange-name-expression" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	The exchange name to use when sending Messages evaluated as an expression on the message (e.g. 'headers.exchange'). By default, this will be an emtpy String.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="routing-key" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	The routing-key to use when sending Messages. By default, this will be an empty String.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="routing-key-expression" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	The routing-key to use when sending Messages evealuated as an expression on the message (e.g. 'payload.key'). By default, this will be an empty String.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="amqp-template" type="xsd:string">
				<xsd:annotation>
					<xsd:appinfo>
						<tool:annotation kind="ref">
							<tool:expected-type type="org.springframework.amqp.core.AmqpTemplate"/>
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="order" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
	The order for this consumer when multiple consumers are registered thereby enabling load-balancing and/or failover. 
					</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.mapping.HeaderMapper" />
						</tool:annotation>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="mapped-request-headers" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[
Comma-separated list of names of AMQP Headers to be mapped from the AMQP request into the MessageHeaders.
This can only be provided if the 'header-mapper' 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").
						]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="mapped-reply-headers" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation><![CDATA[							
    Comma-separated list of names of MessageHeaders to be mapped into the AMQP Message Properties of the AMQP reply message.
	All standard Headers (e.g., contentType) will be mapped to AMQP Message Properties while user-defined headers will be mapped to 'headers' property 
	which itself is a Map.
	This can only be provided if the 'header-mapper' 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").
						]]></xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="inbound-gateway">
		<xsd:annotation>
			<xsd:documentation>
	Configures a gateway that will receive AMQP Messages sent to a given queue and then forward those messages to a Message Channel.
	If a reply Message is returned, it will also send that to the 'replyTo' provide by the AMQP request Message.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="inboundType">
					<xsd:attribute name="request-channel" use="required" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	Message Channel to which converted Messages should be sent.
							</xsd:documentation>
							<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" use="optional" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	Message Channel where reply Messages will be expected.
							</xsd:documentation>
							<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="mapped-reply-headers" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation><![CDATA[							
	Comma-separated list of names of MessageHeaders to be mapped into the AMQP Message Properties of the AMQP reply message.
	All standard Headers (e.g., contentType) will be mapped to AMQP Message Properties while user-defined headers will be mapped to 'headers' property 
	which itself is a Map.
	This can only be provided if the 'header-mapper' 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").
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="channel">
		<xsd:annotation>
			<xsd:documentation>
	Creates a point-to-point channel that is backed by an AMQP Queue.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="channelType">
					<xsd:attribute name="message-driven" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	Indicate whether this channel should be message-driven (subscribable) or not (pollable).
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="queue-name" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	Provide an explicitly configured queue name. If this is not provided, then a Queue will be created
	implicitly with the same name as the channel itself (the "id" of this element). If this channel is
	not message-driven, the implicit creation will require that either an AmqpAdmin instance has been
	provided via the "amqp-admin" attribute or that the configured AmqpTemplate is an instance of RabbitTemplate.
	If the channel is message-driven, the AmqpAdmin will be created using the underlying listener container's
	ConnectionFactory.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="amqp-admin" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	An AmqpAdmin instance to use when declaring a Queue implicitly. This is only needed if an explicit
	"queue-name" is not provided and the channel is not message-driven. Even then, if the referenced
	AmqpTemplate is an instance of RabbitTemplate, the AmqpAdmin can be constructed from that template's
	ConnectionFactory.
							</xsd:documentation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.amqp.core.AmqpAdmin"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="publish-subscribe-channel">
		<xsd:annotation>
			<xsd:documentation>
	Creates a publish-subscribe-channel that is backed by an AMQP FanoutExchange.
	Always message-driven (subscribable).
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="channelType">
					<xsd:attribute name="exchange" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
	Reference to a FanoutExchange instance to which this channel should send Messages. If not provided,
	a FanoutExchange will be declared with this channel's name prefixed by "si.fanout.".
	A Queue will be declared automatically and bound to that exchange to handle the consumer role
	of this channel. 
							</xsd:documentation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.amqp.core.FanoutExchange"/>
								</tool:annotation>
							</xsd:appinfo>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:complexType name="channelType">
		<xsd:annotation>
			<xsd:documentation>
	Base type for 'channel' and 'publish-subscribe-channel'.
			</xsd:documentation>
		</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>
	Unique ID for this Message Channel.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="auto-startup" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	Flag to indicate whether this Message Channel should start automatically.
	This only applies to a message-driven channel. Default is true.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attributeGroup ref="containerAndTemplateAttributes"/>
	</xsd:complexType>

	<xsd:complexType name="inboundType">
		<xsd:annotation>
			<xsd:documentation>
	Base type for the 'inbound-channel-adapter' and 'inbound-gateway' elements.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="id" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	Unique ID for this adapter.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attributeGroup ref="containerAttributes"/>
		<xsd:attribute name="error-channel" use="optional" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	Message Channel to which error Messages should be sent.
				</xsd:documentation>
				<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.mapping.HeaderMapper" />
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="mapped-request-headers" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
Comma-separated list of names of AMQP Headers to be mapped from the AMQP request into the MessageHeaders.
This can only be provided if the 'header-mapper' 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").
						]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="message-converter" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	MessageConverter to use when receiving AMQP Messages.
				</xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.amqp.support.converter.MessageConverter"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="listener-container" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	Reference to the MessageListener container to use for receiving AMQP Messages. If this attribute is provided,
	then no other attribute related to the listener container configuration should be provided. In other words, by
	setting this reference, you must take full responsibility of the listener container configuration. The only
	exception is the MessageListener itself. Since that is actually the core responsibility of this Channel Adapter
	implementation, the referenced listener container must NOT already have its own MessageListener configured.
				</xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="queue-names" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	Names of the AMQP Queues from which Messages should be consumed (comma-separated list).
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="auto-startup" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Boolean value indicating whether this endpoint should start automatically.
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>

	<xsd:attributeGroup name="containerAttributes">
		<xsd:attributeGroup ref="containerOnlyAttributes"/>
		<xsd:attributeGroup ref="containerAndTemplateSharedAttributes"/>
	</xsd:attributeGroup>

	<xsd:attributeGroup name="templateAttributes">
		<xsd:attributeGroup ref="templateOnlyAttributes"/>
		<xsd:attributeGroup ref="containerAndTemplateSharedAttributes"/>
	</xsd:attributeGroup>

	<xsd:attributeGroup name="containerAndTemplateAttributes">
		<xsd:attributeGroup ref="containerOnlyAttributes"/>
		<xsd:attributeGroup ref="templateOnlyAttributes"/>
		<xsd:attributeGroup ref="containerAndTemplateSharedAttributes"/>
	</xsd:attributeGroup>

	<xsd:attributeGroup name="containerAndTemplateSharedAttributes">
		<xsd:attribute name="channel-transacted" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	Flag to indicate that channels created by this component will be transactional.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="connection-factory" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	Reference to the Rabbit ConnectionFactory to be used by this component.	
				</xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.amqp.rabbit.connection.ConnectionFactory"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="message-properties-converter" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	MessagePropertiesConverter to use when receiving AMQP Messages.
				</xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.amqp.rabbit.support.MessagePropertiesConverter"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:attributeGroup>

	<xsd:attributeGroup name="templateOnlyAttributes">
		<xsd:annotation>
			<xsd:documentation>
	Attributes for a RabbitTemplate. This does not include the exchange, queue, or routingKey properties
	since those may or may not be exposed for configuration depending on what type of component uses this
	attribute group. This group also does not include any of the properties that are shared with the
	SimpleMessageListenerContainer, such as channelTransacted, connectionFactory, and messagePropertiesConverter.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="encoding" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	The encoding to use when converting between byte arrays and Strings in message properties.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="message-converter" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	Reference to a MessageConverter to be used by this RabbitTemplate.
				</xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.amqp.support.converter.MessageConverter"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:attributeGroup>

	<xsd:attributeGroup name="containerOnlyAttributes">
		<xsd:annotation>
			<xsd:documentation>
	Attributes for a SimpleMesssageListenerContainer's properties other than queues, queueNames, messageListener, and 
	autoStartup which may or may not be exposed for configuration depending on what type of component uses this attribute group.
	This group also does not include any of the properties that are shared with RabbitTemplate, such as channelTransacted,
	connectionFactory, and messsagePropertiesConverter.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="acknowledge-mode">
			<xsd:annotation>
				<xsd:documentation>
	Acknowledge Mode for the MessageListenerContainer.
				</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="AUTO"/>
					<xsd:enumeration value="MANUAL"/>
					<xsd:enumeration value="NONE"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="advice-chain" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="java.util.Collection" />
					</tool:annotation>
					<xsd:documentation>
	Array of AOP Advice instances to be applied to the MessageListener.
					</xsd:documentation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="concurrent-consumers" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	Specify the number of concurrent consumers to create. Default is 1.
	Raising the number of concurrent consumers is recommended 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. In
	general, stick with 1 consumer for low-volume queues.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="error-handler" use="optional" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
	ErrorHandler to be configured on the underlying MessageListener container.
				</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="expose-listener-channel" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<xsd:documentation>
	Set whether to expose the listener Rabbit Channel to a registered ChannelAwareMessageListener as well as
	to RabbitTemplate calls.
					</xsd:documentation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="phase" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<xsd:documentation>
	The lifeycle phase determining the start/stop order of the underlying listener container.
					</xsd:documentation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="prefetch-count" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<xsd:documentation>
	Specifies how many messages to send to each consumer in a single request. Often this can be set quite high
	to improve throughput. It should be greater than or equal to the tx-size value.
					</xsd:documentation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="receive-timeout" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<xsd:documentation>
	The timeout for each attempt by a consumer to receive the next message.
					</xsd:documentation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="recovery-interval" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<xsd:documentation>
	The interval between recovery attempts, in milliseconds. The default is 5000 ms, that is, 5 seconds.
					</xsd:documentation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="shutdown-timeout" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<xsd:documentation>
	The time to wait for workers in milliseconds after the container is stopped, and before the connection is forced closed.
					</xsd:documentation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>	
		<xsd:attribute name="task-executor" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<xsd:documentation>
	Reference to the Executor to be used for running Consumer threads.
					</xsd:documentation>
					<tool:annotation kind="ref">
						<tool:expected-type type="java.util.concurrent.Executor"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="transaction-attribute" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<xsd:documentation>
	The TransactionAttribute to use when the Consumer receives the AMQP Message and the Listener is invoked
	within a transaction. This is only applicable when a TransactionManager has been configured.
					</xsd:documentation>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.transaction.interceptor.TransactionAttribute"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="transaction-manager" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<xsd:documentation>
	The PlatformTransactionManager to use when the Consumer receives the AMQP Message and the Listener is invoked.
					</xsd:documentation>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.transaction.PlatformTransactionManager"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="tx-size" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<xsd:documentation>
	How many messages to process in a single transaction (if the channel is transactional). For best results it should be
	less than or equal to the prefetch count.
					</xsd:documentation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:attributeGroup>

</xsd:schema>
