入站閘道
入站閘道支援入站通道配接器上的所有屬性 (除了 '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 | 接收 AMQP 訊息時使用的 AmqpHeaderMapper 參考。選填。 預設情況下,只有標準 AMQP 屬性 (例如 contentType ) 會複製到 Spring Integration MessageHeaders 及從其複製。預設 DefaultAmqpHeaderMapper 不會將 AMQP MessageProperties 內的任何使用者定義標頭複製到 AMQP 訊息或從 AMQP 訊息複製。如果提供 'request-header-names' 或 'reply-header-names',則不允許使用。 |
4 | 要從 AMQP 請求映射到 MessageHeaders 的 AMQP 標頭名稱的逗號分隔列表。 只有在未提供 '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 版開始,可以使用 org.springframework.amqp.rabbit.retry.MessageRecoverer
策略設定 AmqpInboundChannelAdapter
,該策略在重試作業於內部呼叫時用於 RecoveryCallback
中。 如需更多資訊,請參閱 setMessageRecoverer()
Java 文件。
批次訊息
請參閱 批次訊息。