我创建了2个不同的应用程序,并在其中一个中启动了camel上下文。如何在第二个应用程序中使用此已启动的上下文?
我尝试使用lookUpByname()获取上下文,并使用jndi上下文绑定camel上下文,但可以加载现有上下文。
还尝试通过在应用程序1中的上下文中设置NameStrategy并在应用程序2中获得相同但看起来像camel auto在DefaultCamelContextNameStrategy中生成名称和前缀。
code snippet:
Application 1 :
public static void main(String[] args)
{
CamelContext ctx = new DefaultCamelContext();
String camelContextId= "sample";
ctx.setNameStrategy(new DefaultCamelContextNameStrategy(
camelContextId));
ctx.start();
}
Application 2:
public static void main(String[] args)
{
sampleRouter testobj = new sampleRouter();
testobj.test();
}
public class sampleRouter extends RouteBuilder
{
public static CamelContext camelContext;
public void test()
try
{
camelContext = getContext();
try {
camelContext.stop();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
请指导我在不同的应用程序中获取已经启动的上下文,因为我希望每次都避免创建新的上下文。
答案 0 :(得分:0)
为什么要避免使用多个CamelContexts?你想要达到什么目标?
没有明确的要求,这对你来说并不容易,但我会尝试提出一些想法。
查看您的代码,您使用了两个不同的 JVM,因为您有2个main
方法。
如果您的应用程序在不同的JVM中运行,请使用JMS Message Broker之类的ActiveMQ作为通信层。
如果在相同 JVM中部署2个战争/应用程序,则可以使用两个CamelContexts并让它们通过VM端点进行通信,如seda-vm和direct-vm。