首页 > 解决方案 > 使用 java 配置的 RabbitMQ 出站网关

问题描述

RabbitMQ Outbound Gateway 将消息发布到rabbitmq 集群的任何示例参考,我正在寻找带有Spring Boot 的Java 配置

标签: spring-integrationspring-integration-amqp

解决方案


请参阅参考手册。那里有 xml、Java 和 Java DSL 示例。

@Bean
@ServiceActivator(inputChannel = "amqpOutboundChannel")
public AmqpOutboundEndpoint amqpOutbound(AmqpTemplate amqpTemplate) {
    AmqpOutboundEndpoint outbound = new AmqpOutboundEndpoint(amqpTemplate);
    outbound.setExpectReply(true);
    outbound.setRoutingKey("foo"); // default exchange - route to queue 'foo'
    return outbound;
}

或者

@Bean
public IntegrationFlow amqpOutbound(AmqpTemplate amqpTemplate) {
    return IntegrationFlows.from(amqpOutboundChannel())
            .handle(Amqp.outboundGateway(amqpTemplate)
                    .routingKey("foo")) // default exchange - route to queue 'foo'
            .get();
}

网关用于请求/回复处理,而不仅仅是“发布”;如果您只是发送,则需要一个通道适配器。

@Bean
@ServiceActivator(inputChannel = "amqpOutboundChannel")
public AmqpOutboundEndpoint amqpOutbound(AmqpTemplate amqpTemplate) {
    AmqpOutboundEndpoint outbound = new AmqpOutboundEndpoint(amqpTemplate);
    outbound.setRoutingKey("foo"); // default exchange - route to queue 'foo'
    return outbound;
}

或者

@Bean
public IntegrationFlow amqpOutbound(AmqpTemplate amqpTemplate) {
    return IntegrationFlows.from(amqpOutboundChannel())
            .handle(Amqp.outboundAdapter(amqpTemplate)
                        .routingKey("foo")) // default exchange - route to queue 'foo'
            .get();
}

推荐阅读