当我查看有关Spring集成的出站通道适配器的文档时,我发现amqp-template是一个可选字段。我还注意到交换名称和路由键都出现在Rabbit Template和出站通道适配器上。
如果我没有提供amqp-template,那么适配器将用于连接工厂。
和
如果我在兔子模板中指定了1组属性而在出站通道适配器中指定了另一组属性,然后为出站通道适配器提供了兔子模板,将使用哪些属性? (不是我会这样做,我只是好奇哪个组件的属性被用于其他组件)
答案 0 :(得分:0)
如果我没有提供amqp-template,那么适配器将用于连接工厂。
它需要来自具有bean名称amqpTemplate
(AmqpOutboundChannelAdapterParser
)的上下文中的一个:
String amqpTemplateRef = element.getAttribute("amqp-template");
if (!StringUtils.hasText(amqpTemplateRef)) {
amqpTemplateRef = "amqpTemplate";
exchange
和routingKey
等属性用于每个message
(AmqpOutboundEndpoint
):
this.amqpTemplate.convertAndSend(exchangeName, routingKey, requestMessage.getPayload(),
从ConfirmCallback
为ReturnCallback
配置AmqpTemplate
和AmqpOutboundEndpoint
。但是在这种情况下,您不能使用共享bean,必须提供单独的bean。
必须在该bean定义上提供所有其他RabbitTemplate
特定选项。 <int-amqp:outbound-channel-adapter>
没有它们。