将apache camel config转换为spring java config

时间:2016-12-29 23:26:08

标签: spring spring-boot apache-camel

我们正在将当前的spring项目转换为spring boot,同时将所有spring bean从xml转换为基于java的配置。

我很难将camel xml配置转换为基于java的配置。

目前我们指定了驼峰配置,路由和端点,如下所示

    <camel:camelContext id="camelClient">
        <camel:template id="camelTemplate"/>
    </camel:camelContext>


        <template id="camelTemplate"/>

这里有几个端点

        <endpoint id="archiveUserQueue"
                  uri="swiftmq:${hk.jms.archive.queue.name}?concurrentConsumers=${hk.jms.archive.queue.consumers}"/>

        <endpoint id="directSmsNotification" uri="direct:sendSMS"/>

其中一条路线

        <route>
            <from ref="directSmsNotification"/>
            <to uri="bean:messengerService?method=sendSmsMessage"/>
        </route>

在java代码中我们访问终点,如下所示

smsEndpoint = _camelContext.getEndpoint("directSmsNotification");

我们如何将camel配置从xml转换为基于java的配置。

我按照http://camel.apache.org/spring-java-config.html指定的说明操作,但由于我不熟悉Camel,所以很难理解。

1 个答案:

答案 0 :(得分:0)

您可以将Spring Java配置与Apache Camel XML配置混合搭配。我问你为什么要首先进行这种转换。

也就是说,如果您查看camel docs,您会看到有一个使用RouteBuilder的示例。

您还可以查看示例spring-boot application。这是来自该示例的修改后的RouteBuilder:

@Component
public class MySpringBootRouter extends RouteBuilder {

    @Override
    public void configure() {

        Context context = getContext();
        MyEndpoint ep = context.getEndpoint("someURI", MyEndpoint.class);

        from(ep)
            .transform().simple("ref:myBean")
            .to("log:out");
    }
}

更新:我修改了代码段以显示直接获取端点。您可以在Camel docs中获取更多信息。我不确定这种方法有多常见。回到我定期使用Camel时,端点是通过URI值以声明方式配置的。我认为我没有在Camel XML或Java代码中明确定义端点。我确定它有用例,但你可以更简单地配置URI。