我们正在将当前的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,所以很难理解。
答案 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。