|
@ -1,12 +1,14 @@
|
|
|
package com.yihu.hos.broker.services.camel;
|
|
|
|
|
|
import com.yihu.hos.broker.common.log.TracerFormatter;
|
|
|
import com.yihu.hos.broker.services.BrokerServerService;
|
|
|
import com.yihu.hos.core.log.Logger;
|
|
|
import com.yihu.hos.core.log.LoggerFactory;
|
|
|
import org.apache.camel.CamelContext;
|
|
|
import org.apache.camel.Exchange;
|
|
|
import org.apache.camel.builder.RouteBuilder;
|
|
|
import org.apache.camel.processor.interceptor.DefaultTraceFormatter;
|
|
|
import org.apache.camel.processor.interceptor.Tracer;
|
|
|
import org.apache.log4j.LogManager;
|
|
|
import org.apache.log4j.Logger;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
@ -22,9 +24,10 @@ import java.util.concurrent.SynchronousQueue;
|
|
|
*/
|
|
|
@Component
|
|
|
public class CamelStartBoot {
|
|
|
private static Logger logger = LogManager.getLogger(CamelStartBoot.class);
|
|
|
private static Logger logger = LoggerFactory.getLogger(CamelStartBoot.class);
|
|
|
|
|
|
private BrokerServerService brokerServerService;
|
|
|
private CamelContext context = SystemCamelContext.getContext();
|
|
|
|
|
|
@Autowired
|
|
|
public void setBrokerServerService(BrokerServerService brokerServerService) {
|
|
@ -35,12 +38,10 @@ public class CamelStartBoot {
|
|
|
logger.info("Apache Camel Context 启动...");
|
|
|
|
|
|
try {
|
|
|
SystemCamelContext.getContext().setTracing(true);
|
|
|
SystemCamelContext.getContext().setUseMDCLogging(true);
|
|
|
|
|
|
context.setUseMDCLogging(true);
|
|
|
|
|
|
Tracer tracer = new Tracer();
|
|
|
DefaultTraceFormatter formatter = new DefaultTraceFormatter();
|
|
|
DefaultTraceFormatter formatter = new TracerFormatter();
|
|
|
formatter.setShowHeaders(true);
|
|
|
formatter.setShowBody(true);
|
|
|
formatter.setShowBodyType(true);
|
|
@ -48,15 +49,18 @@ public class CamelStartBoot {
|
|
|
formatter.setShowOutBody(true);
|
|
|
formatter.setShowOutBodyType(true);
|
|
|
tracer.setFormatter(formatter);
|
|
|
SystemCamelContext.getContext().getProperties().put(Exchange.LOG_DEBUG_BODY_STREAMS, "true");
|
|
|
context.addInterceptStrategy(tracer);
|
|
|
context.setTracing(true);
|
|
|
|
|
|
context.getProperties().put(Exchange.LOG_DEBUG_BODY_STREAMS, "true");
|
|
|
|
|
|
SystemCamelContext.getContext().start();
|
|
|
context.start();
|
|
|
|
|
|
List<URL> URLs = new ArrayList<>();
|
|
|
ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
|
|
|
ClassLoader camelClassLoader = new URLClassLoader(URLs.toArray(new URL[]{}), currentClassLoader);
|
|
|
Thread.currentThread().setContextClassLoader(camelClassLoader);
|
|
|
SystemCamelContext.getContext().setApplicationContextClassLoader(camelClassLoader);
|
|
|
context.setApplicationContextClassLoader(camelClassLoader);
|
|
|
logger.info("Apache Camel Context 启动完成...");
|
|
|
|
|
|
|
|
@ -70,7 +74,7 @@ public class CamelStartBoot {
|
|
|
Class<RouteBuilder> routeBuilderClass = (Class<RouteBuilder>) camelClassLoader.loadClass(className);
|
|
|
if (routeBuilderClass != null) {
|
|
|
RouteBuilder routeBuilder = routeBuilderClass.newInstance();
|
|
|
SystemCamelContext.getContext().addRoutes(routeBuilder);
|
|
|
context.addRoutes(routeBuilder);
|
|
|
}
|
|
|
} catch (ClassNotFoundException e) {
|
|
|
e.printStackTrace();
|