此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

入站网关支持入站通道适配器上的所有属性(除了“channel”替换为“request-channel”),以及一些其他属性。 以下列表显示了可用的属性:Spring中文文档

@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)
1 此适配器的唯一 ID。 自选。
2 将转换后的消息发送到的消息通道。 必填。
3 对接收 AMQP 消息时要使用的引用。 自选。 默认情况下,只有标准 AMQP 属性(如 )被复制到 Spring Integration 或从 Spring Integration 复制。 默认情况下,AMQP 中的任何用户定义的标头都不会复制到 AMQP 消息或从 AMQP 消息复制。 如果提供了“request-header-names”或“reply-header-names”,则不允许。AmqpHeaderMappercontentTypeMessageHeadersMessagePropertiesDefaultAmqpHeaderMapper
4 要从 AMQP 请求映射到 的 AMQP 标头的名称列表以逗号分隔。 仅当未提供“header-mapper”引用时,才能提供此属性。 此列表中的值也可以是与标头名称匹配的简单模式(例如 或或)。MessageHeaders"*""thing1*, thing2""*thing1"
5 要映射到 AMQP 应答消息的 AMQP 消息属性中的逗号分隔的名称列表。 所有标准标头(如 )都映射到 AMQP 消息属性,而用户定义的标头则映射到“标头”属性。 仅当未提供“header-mapper”引用时,才能提供此属性。 此列表中的值也可以是要与标头名称匹配的简单模式(例如,或 或 )。MessageHeaderscontentType"*""foo*, bar""*foo"
6 消息通道,其中应回复消息。 自选。
7 设置用于从回复通道接收消息的基础。 如果未指定,则此属性默认为 (1 秒)。 仅当容器线程在发送回复之前移交给另一个线程时才适用。receiveTimeouto.s.i.core.MessagingTemplate1000
8 自定义的 Bean 引用(以便更好地控制要发送的回复消息)。 您可以提供 的替代实现。AmqpTemplateRabbitTemplate
9 当 没有属性时要使用。 如果未指定此选项,则不提供任何属性,请求消息中不存在任何属性,并且 抛出 an,因为无法路由应答。 如果未指定此选项并提供了外部选项,则不会引发异常。 您必须指定此选项或配置默认值,并在该模板上, 如果预计请求消息中不存在任何属性的情况。replyToo.s.amqp.core.AddressrequestMessagereplyToamqp-templatereplyToIllegalStateExceptionamqp-templateexchangeroutingKeyreplyTo

请参阅入站通道适配器中有关配置属性的说明。listener-containerSpring中文文档

从版本 5.5 开始,可以使用在内部调用重试操作时使用的策略进行配置。 有关更多信息,请参阅 JavaDocs。AmqpInboundChannelAdapterorg.springframework.amqp.rabbit.retry.MessageRecovererRecoveryCallbacksetMessageRecoverer()Spring中文文档

1 此适配器的唯一 ID。 自选。
2 将转换后的消息发送到的消息通道。 必填。
3 对接收 AMQP 消息时要使用的引用。 自选。 默认情况下,只有标准 AMQP 属性(如 )被复制到 Spring Integration 或从 Spring Integration 复制。 默认情况下,AMQP 中的任何用户定义的标头都不会复制到 AMQP 消息或从 AMQP 消息复制。 如果提供了“request-header-names”或“reply-header-names”,则不允许。AmqpHeaderMappercontentTypeMessageHeadersMessagePropertiesDefaultAmqpHeaderMapper
4 要从 AMQP 请求映射到 的 AMQP 标头的名称列表以逗号分隔。 仅当未提供“header-mapper”引用时,才能提供此属性。 此列表中的值也可以是与标头名称匹配的简单模式(例如 或或)。MessageHeaders"*""thing1*, thing2""*thing1"
5 要映射到 AMQP 应答消息的 AMQP 消息属性中的逗号分隔的名称列表。 所有标准标头(如 )都映射到 AMQP 消息属性,而用户定义的标头则映射到“标头”属性。 仅当未提供“header-mapper”引用时,才能提供此属性。 此列表中的值也可以是要与标头名称匹配的简单模式(例如,或 或 )。MessageHeaderscontentType"*""foo*, bar""*foo"
6 消息通道,其中应回复消息。 自选。
7 设置用于从回复通道接收消息的基础。 如果未指定,则此属性默认为 (1 秒)。 仅当容器线程在发送回复之前移交给另一个线程时才适用。receiveTimeouto.s.i.core.MessagingTemplate1000
8 自定义的 Bean 引用(以便更好地控制要发送的回复消息)。 您可以提供 的替代实现。AmqpTemplateRabbitTemplate
9 当 没有属性时要使用。 如果未指定此选项,则不提供任何属性,请求消息中不存在任何属性,并且 抛出 an,因为无法路由应答。 如果未指定此选项并提供了外部选项,则不会引发异常。 您必须指定此选项或配置默认值,并在该模板上, 如果预计请求消息中不存在任何属性的情况。replyToo.s.amqp.core.AddressrequestMessagereplyToamqp-templatereplyToIllegalStateExceptionamqp-templateexchangeroutingKeyreplyTo

批处理消息