Spring Integration的带注释配置用法

时间:2014-02-18 23:54:28

标签: 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

1 个答案:

答案 0 :(得分:4)

很抱歉您发现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