Java 在谷歌应用程序引擎上运行骆驼路线

Java 在谷歌应用程序引擎上运行骆驼路线,java,multithreading,google-app-engine,apache-camel,Java,Multithreading,Google App Engine,Apache Camel,我正试图在GAE上开始一条骆驼路线,却一堵接一堵地撞上了砖墙。首先,我尝试了一条如下所示的路线: from("direct:start") .process(new Processor() { @Override public void process(Exchange exchange) { logger.info("I made it!"); } }) .to("direct:end"); 但那

我正试图在GAE上开始一条骆驼路线,却一堵接一堵地撞上了砖墙。首先,我尝试了一条如下所示的路线:

from("direct:start")
    .process(new Processor() {
        @Override
        public void process(Exchange exchange) {
            logger.info("I made it!");
        }
    })
    .to("direct:end");
但那没什么用。对于Camel和GAE来说都是新手,我怀疑这是因为
direct
组件在路线开始时不充当消费者。然后我试着启动计时器:

from("timer://runOnce?repeatCount=1")
    .process(new Processor() {
        @Override
        public void process(Exchange exchange) {
            logger.info("I made it!");
        }
    })
    .to("direct:end");
结果从GAE得到一个严重错误:

错误:访问被拒绝(java.lang.RuntimePermission modifyThreadGroup)

事实证明,您无法在GAE上创建新的
线程
实例,而这正是
计时器
组件所做的

然后我试着用一个豆子开始这条路线:

public class DummyBean {
    public void kickoffRoute() { return; }
}

// Inside the method that creates and starts the Camel route
SimpleRegistry reg = new SimpleRegistry();
DummyBean bean = new DummyBean();
reg.put("dummy", bean);

CamelContext camel = new DefaultCamelContext(reg);
camel.disableJMX();

// Inside my RouteBuilder
from("bean:dummy")
    .process(new Processor() {
        @Override
        public void process(Exchange exchange) {
            logger.info("I made it!");
        }
    })
    .to("direct:end");
我运行这个程序,只得到了与以前使用
计时器时相同的“拒绝访问”错误

我想做的就是从GAE内部开始一条路线,这样我就可以开始熟悉这两种技术(Camel和GAE)。但就我个人而言,我不知道该怎么做——每个Camel组件似乎都在创建线程,这在GAE上是非法的!所以我问:

  • 您甚至如何在GAE上启动一条路线(初始制作人-
    计时器
    ,或其他)?我看到有一个
    Camel-GAE
    组件,我当然愿意阅读它并学习如何使用它,这样我就可以拥有以
    a开头的路由ghttp:///startRoute
    endpoint,但我真的只是从这里开始,希望有一个更容易使用的组件/端点
  • 如果
    Timer
    Bean
    组件都创建线程,而这在GAE上是不允许的,那么我有一种恶心的感觉:GAE上不允许大多数/所有Camel组件<是这样吗如果是,您如何在GAE上构建有用/有意义的路由?还是有一些GAE的“诀窍”让Camel运行并创建线程?例如,我知道GAE后端不会受到与前端实例相同的线程限制,等等

  • 提前谢谢

    Camel是为在Java环境中运行而构建的,它使用Java SE 6/7,在文件系统访问、线程创建、打开端口的可能性等方面具有任何含义

    正如你所意识到的,谷歌应用程序引擎有几个限制。这并没有使骆驼无法使用。您可以使用许多路由功能、生产者端点(.to(..)、转换等

    事实上,在JavaEE应用服务器中,也有类似的限制,但这并不妨碍使用camel

    如果您真的准备好了,并且需要在GAE中完成camel的所有工作,那么也许可以将jack-in-Camels可插入线程模型制作到GAE中

    免责声明:我从未使用过GAE任务,但这里有一些文档

    您还可以尝试通过GAE中的任何功能启动事件,只需使用生产者模板启动骆驼路线