java - 入站和出站网关 AMQP 注释

标签 java rabbitmq spring-integration amqp spring-boot

我有一个使用 xml 配置的工作 spring 集成 + rabbitmq 应用程序。现在,我将它们转换为 java 配置注释。一些主要的 amqp 对象有可用的类和 java 注释,例如 QueueTopicExchangeBinding。但是,我找不到将 inbound-gatewayoutbound-gateway 转换为 java 注释或类实现的任何引用。

这是我的实现: //网关.xml

<int-amqp:outbound-gateway request-channel="requestChannel" reply-channel="responseChannel" exchange-name="${exchange}" routing-key-expression="${routing}"/>


<int-amqp:inbound-gateway request-channel="inboundRequest"
    queue-names="${queue}" connection-factory="rabbitConnectionFactory"
    reply-channel="inboundResponse" message-converter="compositeMessageConverter"/>

是否可以将它们转换为 java 注解或类实现(bean 等)?

补充:我目前正在使用 spring boot + spring integration

最佳答案

如果你看看 Spring Integration Java DSL 就太好了.

它为 AMQP 提供了一些流利的东西:

@Bean
public IntegrationFlow amqpFlow() {
     return IntegrationFlows.from(Amqp.inboundGateway(this.rabbitConnectionFactory, queue()))
           .transform("hello "::concat)
           .transform(String.class, String::toUpperCase)
           .get();
}

@Bean
public IntegrationFlow amqpOutboundFlow() {
       return IntegrationFlows.from(Amqp.channel("amqpOutboundInput", this.rabbitConnectionFactory))
               .handle(Amqp.outboundAdapter(this.amqpTemplate).routingKeyExpression("headers.routingKey"))
               .get();
}

从注释的角度来看,您应该直接使用 Spring Integration 中的类来配置这样的东西:

@Bean
public AmqpInboundGateway amqpInbound() {
    AmqpInboundGateway gateway = new AmqpInboundGateway(new SimpleMessageListenerContainer(this.rabbitConnectionFactory));
    gateway.setRequestChannel(inboundChanne());
    return gateway;
}

@Bean
@ServiceActivator(inputChannel = "amqpOutboundChannel")
public AmqpOutboundEndpoint amqpOutbound() {
    AmqpOutboundEndpoint handler = new AmqpOutboundEndpoint(this.rabbitTemplate);
    handler.setOutputChannel(amqpReplyChannel());
    return handler;
}

关于java - 入站和出站网关 AMQP 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24673960/

相关文章:

java - 通过剪切任意角度旋转(Paeth算法)

java - 使用 Void* 参数将套接字数据传递给 JNA 函数

java - Java vs Scala类型层次结构

erlang - 超出框架最大尺寸

javascript - 如何使用 amqp.node 使rabbitmq消息过期

java - 捕获 Spring Integration DSL 错误配置异常?

java - BigDecimal 没有做加法操作

java - Spring-Boot AMQP 1.3.1.RELEASE - 持久队列

java - 如何保证该工作在开始IntegrationFlow的下一步之前完成?

java - Spring Integration DSL - Wiretap 不异步运行