2015-09-23 2 views
6

Ich möchte Akka, Apache Camel, Spring kombinieren und weiß nicht, wie man die drei Dinge im selben Projekt nutzen kann.Akka Camel und Spring

war ich

1. write some working code with akka, akka-camel extension and camel routes(Java DSL) 
2. use camel and spring (use java DSL but spring for transactions and etc..) 

Jetzt brauche ich jemand zu kombinieren 1 und 2 erfolgreich in der Lage Kann mir die einfachste Art und Weise deuten darauf hin, dies zu erreichen?

EDIT Einige sagen AKKA nicht mehr Frühling in Objektinstanziierung aufgrund Konflikt unterstützt gemäß den unten stehenden Link Why spring integration doc for akka exists only for 1.3.1 but not for next versions

auch eine ähnliche Frage ist es ohne eine richtige Lösung präsentiert aber die Post etwa 2 Jahre alt akka-camel 2.2.1 route definition using Spring XML

in einer Blog-Post (die ich jetzt nicht halten, den Link bekommen) ein Verfahren beschrieben worden, die zusammenfassend, werden die Akteure definiert und Akka Art und Weise verwendet, und was auch immer die Verarbeitung Akka Schauspieler zu sein verdrahtet mit Spring. Aber es gab kein solides Beispiel.

+0

Wer jemals nach unten Abstimmung versucht, Geist ein, wenn Sie hinzufügen Kommentiere auch, um zu sagen, warum du abstimmst. Der Kommentar könnte verdammt hilfreich sein. – SashikaXP

Antwort

1

Ich stelle mir deine # 2 wie folgt aussieht:

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:ctx="http://www.springframework.org/schema/context" 
     xmlns:camel="http://camel.apache.org/schema/spring" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd > 

    <!-- Camel route configuration --> 
    <camelContext id = "testCamelRouteContext" xmlns="http://camel.apache.org/schema/spring"> 
     <route id="test_data_webservice"> 
      <from uri="jetty:http://localhost:8888/myTestService"/> 
      <log logName="HTTP LOG" loggingLevel="INFO" message="HTTP REQUEST: ${in.header.testdata}"/> 
      <process ref="myTestService"/> 
     </route> 
    </camelContext> 

    <context:annotation-config /> 

    <bean class="com.package.service" id="myTestService"/> 

     <bean id="genericDao" class="com.dao.Impl"> 
     <property name="dataSource" ref="datasource" /> 
    </bean> 

    <bean id="testingDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     datasource stuff 
    </bean> 
</beans> 

Ist es möglich, dass Sie dieses Kamel Kontext durch Akka bekommen? Etwas wie.

Fügen Sie in Ihrem Akka config:

akka.camel.context-provider="myNewContext" 

New context Klasse:

class myNewContext extends ContextProvider{ 
    override def getContext(system: ExtendedActorSystem): SpringCamelHybridContext 
} 

Ich vermute, bin das ist, wo die Bohne Injektion Kollision zwischen Frühling und Akka auftreten könnten. Ich habe Akka vorher noch nie benutzt, daher ist meine Antwort trivial, aber ich wollte sehen, ob ich dir etwas Hilfe anbieten kann.

0

Wiederbelebung eines alten Threads.

akka-springctx-camel Bibliothek ist da, um Ihr Leben schmerzlos zu machen, Akka, Spring, Camel, CXF usw. zu integrieren

Add Artefakt:

<dependency> 
    <groupId>com.github.PuspenduBanerjee</groupId> 
    <artifactId>akka-springctx-camel</artifactId> 
    <version>0.0.5</version> 
</dependency> 

hinzufügen Provider Camel Context in Akka config:

akka.camel.context-provider=system.SpringCamelContextProvider 

Besorgen Sie sich ActorSystem:

implicit val system = SpringContextActorSystemProvider.create 

Erstellen Sie eine benutzerdefinierte RouteBuilder [andere Art und Weise könnte sein, Akka Verbraucher]

class CustomRouteBuilder(system: ActorSystem, echoActor: ActorRef) 
    extends RouteBuilder { 
    def configure { 
    from("direct:testEP") 
     .routeId("test-route") 
     .to(echoActor) 

    } 

Kamel (Frühling) Kontext Holen und fügen Sie Routen zu ihm:

val camel = CamelExtension(system) 
    camel.context.addRoutes(
     new CustomRouteBuilder(system, system.actorOf(Props[EchoActor]))) 

Dieser Testfall erhalten Sie eine detaillierte Vorstellung geben: https://github.com/PuspenduBanerjee/akka-springctx-camel/blob/master/src/test/scala/AkkaSpringCtxTestSpec.scala