2

AMQP を介して ActiveMQ と統合する Apache Camel アプリケーションを作成しようとしています。

私は提供された「camel-example-spring-jms」プロジェクトから作業してきましたが、これは標準の TCP 接続を介していますが、TCP を使用して正常に動作している (組み込みではなく) スタンドアロンの ActiveMQ 5.8 インストールを使用するように変更しました。 .

アクティブな MQ 構成 ( 5672 の amqp )

<transportConnectors>
    <transportConnector name="openwire" uri="tcp://0.0.0.0:61610?maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"/>
    <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"/>
</transportConnectors>

「 camel-server.xml 」内で、既存の「jms」「ActiveMQComponent」を、接続 URL を指定する「AMQConnectionFactory」を参照する「JmsComponent」に置き換えました (以下の両方のバリエーションを試しました)。

amqp://guest:guest@localhost/test?brokerlist='tcp://localhost:5672'
amqp://guest:guest@/?brokerlist='tcp://localhost:5672'

<bean id="jmsConnectionFactory" class="org.apache.qpid.client.AMQConnectionFactory">
    <constructor-arg index="0"
        value="amqp://guest:guest@localhost/test?brokerlist='tcp://localhost:5672'" />
</bean>
<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
    <property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="useMessageIDAsCorrelationID" value="true" />
</bean>

サーバーは上記の構成で正常に起動するように見えますが、「ServerRoutes.java」の amqp キューにルートを追加すると、起動時にエラーが発生します。

from("amqp:queue:numbers").to("multiplier");

Camel Server ウィンドウのエラーは次のとおりです。

[nsumer[numbers]] INFO  AMQConnection - to broker at tcp://localhost:5672
org.apache.qpid.AMQException: Cannot connect to broker: connect() aborted [error code 200: reply success]

私のActiveMQウィンドウのエラーは次のとおりです。

org.apache.activemq.transport.amqp.AmqpProtocolException: Could not decode AMQP frame: hex: 414d51500101000a
Caused by: org.apache.qpid.proton.engine.TransportException: AMQP header mismatch value 1, expecting 0  

この問題を診断するには、どんな助けも歓迎します。

ありがとう。

4

2 に答える 2

0

次の mvn 依存関係を追加することで、これを機能させることができました。

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-amqp</artifactId>
        <version>${camel.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-jms_1.1_spec</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.qpid</groupId>
        <artifactId>qpid-amqp-1-0-client-jms</artifactId>
        <version>0.24</version>
    </dependency>
    <dependency>
        <groupId>org.apache.qpid</groupId>
        <artifactId>qpid-amqp-1-0-client</artifactId>
        <version>0.24</version>
    </dependency>

そして、この接続ファクトリを使用します:

<bean id="jmsConnectionFactory" class="org.apache.qpid.amqp_1_0.jms.impl.ConnectionFactoryImpl" factory-method="createFromURL">
<constructor-arg index="0" type="java.lang.String" value="amqp:///?brokerlist='tcp://localhost:5672''" />

于 2014-01-22T04:10:30.050 に答える