spring - Spring Integration 的带注释的配置用法

标签 spring rabbitmq spring-integration spring-amqp

我有以下 xml,我想用 @Configuration 类替换这个烦人的 xml

<int:gateway id="someActionGateway "
        service-interface="x.y.z.SomeActionGateway"
        default-request-channel="some-action-channel-raw" />

 <int:channel id="some-action-channel-raw" />

 <int:header-enricher input-channel="some-action-channel-raw" output-channel="some-action-to-json-channel">
        <int:header name="someAction" value="sendSomething"/>
 </int:header-enricher>

    <int:channel id="some-action-to-json-channel" />

    <int:object-to-json-transformer
        input-channel="some-action-to-json-channel" output-channel="some-action-outbound-channel"
        content-type="text/x-json" />

    <int:channel id="some-action-outbound-channel" />

    <int-amqp:outbound-channel-adapter
        channel="some-action-outbound-channel" exchange-name="some-action-exchange"
        routing-key="someAction.routing.key" amqp-template="amqpTemplate"
        mapped-request-headers="*">
    </int-amqp:outbound-channel-adapter>

    <rabbit:direct-exchange name="some-action-exchange"
        auto-delete="false" durable="true">
        <rabbit:bindings>
            <rabbit:binding queue="some-action-queue" key="someAction.routing.key" />
        </rabbit:bindings>
    </rabbit:direct-exchange>

和我的网关:

public interface SomeActionGateway {

    @Gateway
    public void sendSomething(@Payload SomeDto dto);

}

我已经在 spring-amqp 使用配置注释类,它工作得很好。 如何使用 Spring Integration 配置执行相同的操作?

P.S:我正在使用 Spring 3.2 和 Spring 集成 3.0

最佳答案

很抱歉您发现 XML 配置“烦人”。

我们正在努力改进 Spring Integration 的 JavaConfig (@Configuration) 体验。

您现在可以使用 JavaConfig 连接任何端点,但这并不漂亮;端点可以与 MessageDrivenConsumer (或 PollingConsumer)以及适当的 MessageHandler 一起连接。您必须深入研究 ConsumerEndpointFactoryBean 和 XML 解析器以获取完整的详细信息;大多数组件需要多个 bean 定义。

就像我说的,我们正在努力;我们目前有一个开放的 Pull Request对于网关,并且正在进行 Java DSL in the extensions repo但这是一个正在进行中的工作,Scala 和 Groovy DSL 也是如此。

编辑:

Spring Integration 4.0 使使用 @Configuration 变得更加容易。

查看最近的webinar .

关于spring - Spring Integration 的带注释的配置用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21868109/

相关文章:

asynchronous - 阻止获取aio_pika

rabbitmq - 在 RabbitMq 中移动单个消息

java - 如何使用 Spring Integration Aggregator 进行 'look-ahead' 发布?

java - 如何在 spring 集成中自定义或委托(delegate) TcpNetClientConnectionFactory 作为 TCP 连接池

java - springrabbit是否需要声明队列来发送消息

java - spring中如何使用@Transactional注解加入父事务

java - 如何调用 maven-resources-plugin 然后调用 exec-maven-plugin 然后再次调用 maven-resources-plugin

spring - 从另一个模块加载 Spring 配置

spring - 使用 2 个消费者配置时消费者吞吐量缓慢

java - 仍然无法访问本地主机 :5762 after starting RabbitMQ server