Java 在谷歌应用程序引擎上运行骆驼路线
我正试图在GAE上开始一条骆驼路线,却一堵接一堵地撞上了砖墙。首先,我尝试了一条如下所示的路线: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"); 但那
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中的任何功能启动事件,只需使用生产者模板启动骆驼路线