2016-04-30 10 views
0

Ich benutze activemq mit Kamel für den Verbrauch von Nachrichten aus einer Warteschlange und senden sie an einen HTTP-Server. Ich verwende folgende Kamel-Konfiguration: -Activemq nicht mit HTTP-URI

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> 
    <route> 
     <from uri="activemq:queue:Consumer.A.VirtualTopic.Orders"/> 
     <to uri="http://localhost:8080/" /> 
     <!-- <to uri="file:///Users/vinod/activemq.txt"/> --> 
     <!-- <to uri="activemq:queue:sssss"/> --> 
    </route> 
</camelContext> 

<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent" > 
    <property name="connectionFactory"> 
     <bean class="org.apache.activemq.ActiveMQConnectionFactory"> 
     <property name="brokerURL" value="vm://localhost?create=false"/> 
     </bean> 
    </property> 
</bean> 

Im ersten Block erzeugt eine Route, die Verbraucher-Nachrichten von activemq:queue:Consumer.A.VirtualTopic.Orders Warteschlange und sie an dem Server an http://localhost:8080/ senden. Die anderen zwei kommentierten Ziele funktionieren gut, aber wenn ich activemq mit der obigen Konfiguration für das Senden von Nachrichten über http starte, stoppt der Server ohne eine Fehlermeldung zu werfen. Activemq Protokoll dafür ist https://gist.github.com/kumar003vinod/1e5944cb246edb74c47fef7a0b433387

Bitte geben Sie einige Einblicke.

Antwort

1

Stellen Sie sicher, dass camel-http und camel-http-common JARs im Verzeichnis ActiveMQ lib/camel enthalten sind. Sie müssen möglicherweise auch die transitiven Abhängigkeiten von camel-http in dieses Verzeichnis einschließen, damit ActiveMQ alle erforderlichen JARs in seinem Klassenpfad enthält.

Das wäre commons-httpclient und commons-codec JARs, aber ich denke, sie sind bereits in enthalten.

+0

Ich habe diese Abhängigkeiten in pom.xml im Stammverzeichnis enthalten (siehe diff hier https://gist.github.com/kumar003vinod/5d50e9c403856ce93dec192bacfab469). Ich kompiliere Projekt von der Quelle. Nachdem ich diese hinzugefügt habe, wenn ich 'mvn -Dtest = false -DfailIfNoTests = false install' -Befehl verwendet habe, um ein Projekt zu erstellen, werden die Jars für diese nicht in 'lib/camel' erstellt. Siehe vollständige Pom-Datei https://gist.github.com/kumar003vinod/f643dbfe4d6b373bfde395c607e5e945. Irgendwelche Hinweise? –

+0

Ich kann es irgendwie kompilieren, indem ich Abhängigkeiten in Multi-Pom-Dateien hinzufüge, aber ich bekomme nicht 'Converter-Typ ignorieren: org.apache.camel.component.http.RequestEntityConverter, da eine abhängige Klasse nicht gefunden werden konnte: java.lang. NoClassDefFoundError: org/apache/commons/httpclient/Methoden/RequestEntity | org.apache.camel.impl.converter.AnnotationTypeConverterLoader | main java.lang.NoClassDefFoundError: org/apache/commons/httpclient/Methoden/RequestEntity' Fehler, wenn activemq startet. Überprüfen Sie https://gist.github.com/kumar003vinod/ce182c4009de1998f0927a17a5e663bd für weitere Informationen. –

+0

Das obige Problem wurde verursacht, weil ich 'commons-httpclient' nicht installiert habe. Nach der Installation funktioniert es gut. –