多骆驼Proxys在同一骆驼方面
问题描述:
我试图调用使用骆驼代理和Java接口的直接端点。我将这个接口作为OSGI服务公开给另一个包并访问该包中的接口。一切正常,现在我需要调用另一个直接端点基于相同的骆驼上下文使用相同的接口的特定条件。我怎样才能做到这一点?多骆驼Proxys在同一骆驼方面
Camel routes:
<camelContext id="cContext" trace="false" xmlns="http://camel.apache.org/schema/blueprint">
<proxy id="camelProxyService"
serviceInterface="com.xxx.CamelProxyService"
serviceUrl="direct:endpoint1" />
<route id="route1">
<from uri="direct:endpoint1" />
<to uri="seda:a" />
</route>
<route id="route2">
<from uri="direct:endpoint2" />
<to uri="seda:b" />
</route>
</camelContext>
<service ref="camelProxyService" interface="com.xxx.CamelProxyService"/>
public interface CamelProxyService {
public void method1(String str);
public void method2(String str);
}
How can i define the interface as camel proxy in camel context and mention method names to call different direct endpoints? Any help is appreciated.
答
<proxy id="camelProxyService"
serviceInterface="com.uday.camel.proxy.CamelProxyService"
serviceUrl="direct:endpoint1" />
<camel:route>
<camel:from uri="direct:endpoint1"/>
<camel:process ref="conditionProcess"/>
<camel:choice>
<camel:when>
<camel:header>${condition}=method1</camel:header>
<camel:to uri="seda:a"/>
</camel:when>
<camel:otherwise>
<camel:to uri="seda:b"/>
</camel:otherwise>
</camel:choice>
<camel:stop/>
</camel:route>
公共类ConditionProcess实现处理器{
@Override
public void process(Exchange exchange) throws Exception {
BeanInvocation invocation = exchange.getIn().getBody(BeanInvocation.class);
String methodName = invocation.getMethod().getName();
exchange.getIn().setHeader("condition", methodName);
System.out.println("Method "+methodName);
}
}