Ich habe gerade begonnen, Camel in einem meiner Projekte zu verwenden. Ich versuche Camel mit Spring zu konfigurieren, habe aber Probleme damit.
Ich möchte keine XML-Konfiguration verwenden, sondern gehe mit Spring-basierten Anmerkungen zur Konfiguration von Routen und Prozessoren.CamelContext nimmt nicht an Frühlingsnotierte Routen
Meine App ist eine eigenständige Spring-Anwendung, die als Jar ausgeführt wird. Damit die App läuft, habe ich eine leere geplante Methode, die alle x min ausgeführt wird.
Im Folgenden sind die Abhängigkeiten in meinem build.gralde
// Spring //
compile('org.springframework:spring-core:5.0.0.RC2')
compile('org.springframework:spring-context:5.0.0.RC2')
compile('org.springframework:spring-beans:5.0.0.RC2')
compile('org.springframework:spring-context-support:5.0.0.RC2')
// Apache //
// Camel //
compile('org.apache.camel:camel-core:2.19.1')
compile('org.apache.camel:camel-spring:2.19.1')
Schnappschuss beans.xml
<context:annotation-config/>
<tx:annotation-driven/>
<context:component-scan base-package="my.package" />
<camelContext id="aggregatorCamelContext" autoStartup="true" xmlns="http://camel.apache.org/schema/spring">
<package>
my.package.camel
</package>
</camelContext>
Probe RouteBuilder
@Component
public class SampleRoute extends RouteBuilder {
@Autowired
MyClass myObject;
@Override
public void configure() throws Exception {
from("file:filelist")
.process(myObject)
.to("file:processedList");
}
}
die App am Leben zu halten (ich wenig hacky weiß, aber genügt für jetzt)
@Component
@EnableScheduling
public class KeepitAlive {
@Scheduled(fixedRate = 1000l)
public void run(){
System.out.println("KeepitAlive.run "+ Thread.currentThread().getName());
}
}
Hauptklasse. Ich habe sowohl die Methoden versucht, Frühling Kontext Initialisierung sowie Camel Main, aber ohne Glück
public class MyApplication {
public static void main(String[] args) throws Exception {
/*AbstractXmlApplicationContext context =
new ClassPathXmlApplicationContext("path/to/beans.xml");*/
Main main = new Main();
main.setApplicationContextUri("path/to/beans.xml");
main.start();
}
}
Wenn ich meine Route innerhalb camelContext Erklärung setzen sich, funktioniert es absolut in Ordnung,
<route>
<from uri="file:filelist"/>
<to uri="file:processedlist"/>
</route>
I habe auch in Camel Spring Integration documentation untersucht, aber es enthält auch XML-basierte Konfiguration.
Könnte jemand bitte mich in die richtige Richtung führen.
Verwenden Sie die 'run' Methode auf der' Main' Klasse Wenn es von Apache Camel. Siehe diese FAQ: http://camel.apache.org/running-camel-standalone-and-have-it-keep-running.html –