|
如需使用最新稳定版本,请使用 Spring Integration 7.0.4! |
传入网关
入站网关支持入站通道适配器上的所有属性(除了将'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)
| 1 | 此适配器的唯一 ID。 可选。 |
| 2 | 消息通道,转换后的消息将发送至此。 必需。 |
| 3 | 引用一个 AmqpHeaderMapper,用于接收 AMQP 消息。
可选。
默认情况下,仅标准 AMQP 属性(例如 contentType)会被复制到 Spring Integration 的 MessageHeaders 中或从其中复制出来。
AMQP MessageProperties 中的任何用户自定义头信息都不会通过默认的 DefaultAmqpHeaderMapper 与 AMQP 消息进行复制。
如果提供了'request-header-names'或'reply-header-names',则不允许使用此选项。 |
| 4 | 以逗号分隔的 AMQP 头名称列表,这些头将从 AMQP 请求映射到 MessageHeaders。
仅当未提供 'header-mapper' 引用时,方可提供此属性。
该列表中的值也可以是用于匹配头名称的简单模式(例如 "*"、"thing1*, thing2" 或 "*thing1")。 |
| 5 | 要映射到 AMQP 回复消息的 AMQP 消息属性中的MessageHeaders名称的逗号分隔列表。
所有标准标头(例如contentType)都会映射到 AMQP 消息属性,而用户定义的标头会映射到“headers”属性。
仅当未提供“header-mapper”引用时,才能提供此属性。
此列表中的值也可以是用于与标头名称进行匹配的模式(例如"*"或"foo*, bar"或"*foo")。 |
| 6 | 消息通道,预期在此接收回复消息。 可选。 |
| 7 | 为底层 o.s.i.core.MessagingTemplate 设置接收来自回复通道消息的 receiveTimeout。
如果未指定,此属性默认为 1000(1 秒)。
仅当容器线程在发送回复之前将任务转交给另一个线程时才适用。 |
| 8 | 自定义的 AmqpTemplate Bean 引用(以便更好地控制要发送的回复消息)。
您可以为 RabbitTemplate 提供替代实现。 |
| 9 | 当 requestMessage 没有 replyTo 属性时,将使用 replyTo o.s.amqp.core.Address。
如果未指定此选项,且未提供 amqp-template,请求消息中不存在 replyTo 属性,
则会抛出 IllegalStateException,因为无法路由回复。
如果未指定此选项但提供了外部 amqp-template,则不会抛出异常。
如果您预期请求消息中不存在 replyTo 属性的情况,则必须指定此选项,
或在该模板上配置默认的 exchange 和 routingKey。 |
请参阅入站通道适配器中的说明,了解如何配置listener-container属性。
从版本 5.5 开始,AmqpInboundChannelAdapter可以配置为使用在内部调用重试操作时应用于RecoveryCallback的org.springframework.amqp.rabbit.retry.MessageRecoverer策略。
有关更多信息,请参阅setMessageRecoverer()的 JavaDocs。
批处理消息
请参阅 批量消息。