J'essaie de démarrer une route Camel sur GAE et je cours dans un mur de briques après le prochain. J'ai d'abord essayé une route qui ressemblait à ceci:Exécution Route Camel sur Google App Engine
from("direct:start")
.process(new Processor() {
@Override
public void process(Exchange exchange) {
logger.info("I made it!");
}
})
.to("direct:end");
Mais cela ne fait rien. Étant nouveau à à la fois Camel et GAE, je soupçonne que c'est parce que le composant direct
n'agit pas en tant que consommateur pour le début d'un itinéraire. Alors j'ai essayé le coup d'envoi d'une minuterie:
from("timer://runOnce?repeatCount=1")
.process(new Processor() {
@Override
public void process(Exchange exchange) {
logger.info("I made it!");
}
})
.to("direct:end");
seulement pour obtenir une erreur désagréable de GAE:
Error: access denied (java.lang.RuntimePermission modifyThreadGroup)
Et il se trouve que vous ne pouvez pas créer de nouvelles instances Thread
sur GAE, et c'est exactement ce que fait le composant Timer
.
Alors j'ai essayé coups de pied la route avec un haricot:
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");
j'ai couru ce, seulement pour obtenir la même erreur « accès refusé » à partir avant le Timer
.
Tout ce que je suis en train de faire est le coup d'envoi d'une route à l'intérieur GAE afin que je puisse commencer à se familiariser avec les deux technologies (Camel & GAE). Mais pour la vie de moi, je n'arrive pas à comprendre comment faire ça - chaque composant de Camel semble créer des threads, qui sont illégaux sur GAE! Je demande donc:
- Comment vous le coup d'envoi, même une route (un producteur initial -
Timer
ou autre) sur GAE? Je vois qu'il y a un composantCamel-GAE
, et je suis prêt à lire et apprendre comment l'utiliser, de sorte que je puisse avoir des routes commençant par, par exemple, un point de terminaisonghttp:///startRoute
, mais je commence vraiment juste ici et j'espère qu'un composant/point de terminaison plus facile fonctionnera avec. - Si les deux composants
Timer
etBean
créent des threads, ce qui est interdit sur GAE, j'ai une sensation de mal dans l'estomac que la plupart/tous les composants de Camel sont interdits sur GAE. Est-ce le cas?!?! Si oui, comment construisez-vous routes utiles/significatives sur GAE? Ou y a-t-il un "truc" GAE pour faire tourner Camel et créer des discussions? Par exemple, je sais que les backends GAE ne subissent pas les mêmes restrictions de threading que les instances frontend, etc.
Merci d'avance!