java - 为什么运行 Camel 示例需要在主线程上 hibernate

标签 java multithreading apache-camel

我是 Camel 新手,我正在尝试了解它是如何工作的。

我尝试了以下示例:

public class CamelMainTest {

        public static void main(String args[]) throws Exception {
            CamelContext context = new DefaultCamelContext();
            context.addRoutes(new RouteBuilder() {
                public void configure() {
                    from("file:d:\\inbox\\json?noop=true").to("file:d:\\outbox");
                }
            });
            context.addRoutes(getFileRoute());
            context.start();
    //      Thread.sleep(50000);
            context.stop();

}

我正在将文件从一个位置复制到另一个位置,但失败。

当我从 Thread.sleep(50000); 行中删除注释时,它可以正常工作。

谁能解释一下为什么需要在主线程上 hibernate ?

最佳答案

我认为CamelContext作为一个单独的线程运行。如果您注释掉 Thread.sleep(50000);,则 contextstart() 并立即 stop()导致它抛出错误?

如果是 Thread.sleep(50000); 上下文将 start() 并且当主线程处于 sleep 状态时,context 将完成将作业作为生成线程,然后 stop()

关于java - 为什么运行 Camel 示例需要在主线程上 hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21302322/

相关文章:

java - ClassCastException 原因

java - Apache Camel 在路由期间返回多个异常

java - 通过不同的线程更新java UI

java - 仅用一个操作停止一个线程

java - 在 Camel-Spring-Boot 设置中配置来自外部 JAR 的 Camel 路由

java - 单元测试复合服务方法

java - 创建更多线程的线程

java - 删除节点的所有子节点,同时保留对 Firebase 中父节点的引用

java - 如何过滤 Google Play,使应用仅显示在 7 英寸平板电脑上

java - 在 hibernate 搜索中使用任何搜索词和合作社 id 查询合作社成员