入站网关
入站网关支持入站通道适配器的所有属性(除了'channel'被'request-channel'取代之外),以及一些附加属性。以下列表显示了可用的属性:
- Java DSL
- Java
- XML
@Bean // return the upper-cased payload
public IntegrationFlow amqpInboundGateway(ConnectionFactory connectionFactory) {
    return IntegrationFlow.from(Amqp.inboundGateway(connectionFactory, "foo"))
            .transform(String.class, String::toUpperCase)
            .get();
}
@Bean
public MessageChannel amqpInputChannel() {
    return new DirectChannel();
}
@Bean
public AmqpInboundGateway inbound(SimpleMessageListenerContainer listenerContainer,
        @Qualifier("amqpInputChannel") MessageChannel channel) {
    AmqpInboundGateway gateway = new AmqpInboundGateway(listenerContainer);
    gateway.setRequestChannel(channel);
    gateway.setDefaultReplyTo("bar");
    return gateway;
}
@Bean
public SimpleMessageListenerContainer container(ConnectionFactory connectionFactory) {
    SimpleMessageListenerContainer container =
                    new SimpleMessageListenerContainer(connectionFactory);
    container.setQueueNames("foo");
    container.setConcurrentConsumers(2);
    // ...
    return container;
}
@Bean
@ServiceActivator(inputChannel = "amqpInputChannel")
public MessageHandler handler() {
    return new AbstractReplyProducingMessageHandler() {
        @Override
        protected Object handleRequestMessage(Message<?> requestMessage) {
            return "reply to " + requestMessage.getPayload();
        }
    };
}
<int-amqp:inbound-gateway
                          id="inboundGateway"                // <1>
                          request-channel="myRequestChannel" // <2>
                          header-mapper=""                   // <3>
                          mapped-request-headers=""          // <4>
                          mapped-reply-headers=""            // <5>
                          reply-channel="myReplyChannel"     // <6>
                          reply-timeout="1000"               // <7>
                          amqp-template=""                   // <8>
                          default-reply-to="" />             // <9>
- 此适配器的唯一 ID。可选。 
- 转换后的消息发送到的消息通道。必填。 
- 在接收 AMQP 消息时使用的 - AmqpHeaderMapper的引用。可选。默认情况下,只有标准的 AMQP 属性(如- contentType)会被复制到 Spring Integration- MessageHeaders中。AMQP- MessageProperties中任何用户定义的头信息都不会被默认的- DefaultAmqpHeaderMapper复制到或从 AMQP 消息中复制。如果提供了 'request-header-names' 或 'reply-header-names',则不允许此选项。
- 从 AMQP 请求映射到 - MessageHeaders的 AMQP 头名称的逗号分隔列表。仅在未提供 'header-mapper' 引用的情况下可以提供此属性。此列表中的值也可以是与头名称匹配的简单模式(例如- "*"或- "thing1*, thing2"或- "*thing1")。
- 映射到 AMQP 回复消息的 AMQP 消息属性中的 - MessageHeaders名称的逗号分隔列表。所有标准头(如- contentType)都会映射到 AMQP 消息属性,而用户定义的头会映射到 'headers' 属性。仅在未提供 'header-mapper' 引用的情况下可以提供此属性。此列表中的值也可以是与头名称匹配的简单模式(例如- "*"或- "foo*, bar"或- "*foo")。
- 期望回复消息的消息通道。可选。 
- 设置底层 - o.s.i.core.MessagingTemplate的- receiveTimeout,用于从回复通道接收消息。如果未指定,默认为- 1000(1 秒)。仅当容器线程在回复发送之前将任务交给另一个线程时才适用。
- 自定义的 - AmqpTemplatebean 引用(以对要发送的回复消息进行更多控制)。您可以为- RabbitTemplate提供替代实现。
- 当 - requestMessage没有- replyTo属性时使用的- o.s.amqp.core.Address的- replyTo。如果未指定此选项,并且没有提供- amqp-template,请求消息中也没有- replyTo属性,则会抛出- IllegalStateException,因为无法路由回复。如果未指定此选项并且提供了外部- amqp-template,则不会抛出异常。您必须指定此选项或在该模板上配置默认的- exchange和- routingKey,如果您预计请求消息中有时不存在- replyTo属性的情况。
参见 入站通道适配器 中关于配置 listener-container 属性的说明。
从 5.5 版本开始,AmqpInboundChannelAdapter 可以配置一个 org.springframework.amqp.rabbit.retry.MessageRecoverer 策略,在重试操作内部调用时,该策略会在 RecoveryCallback 中使用。更多信息请参阅 setMessageRecoverer() 的 JavaDocs。
批量消息
见 批量消息。