0

キャメルとの敗走に問題があります。これは私の構成ファイルで、非常に単純です。

<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="brokerURL" value="tcp://10.211.55.20:5672"/>
</bean>

<camel:camelContext xmlns="http://camel.apache.org/schema/spring">

    <jmxAgent id="agent" createConnector="false" disabled="true"/>

    <camel:route>
        <route>
            <from uri="activemq:hello?destination.consumer.exclusive=true&amp;destination.consumer.prefetchSize=50"/>
            <to uri="stream:out"/>
        </route>
    </camel:route>
</camel:camelContext>

この場合、RabbitMQ を使用しており、hello はキュー名です。

実行すると、次のエラー メッセージが表示されます。

Invocation of init method failed; nested exception is java.lang.IllegalArgumentException:  Route has no inputs: Route[[] -> [Route[[From[activemq:hello?destination.consumer.exclusive=true&destination.consumer.prefetchSize=50]] -> [To[stream:out]]]]]

何か案が?Camel + RabbitMQ のサンプルまたはチュートリアルはどこで入手できますか?

- - 更新しました - -

以下のコメントの提案に従って、構成を修正し、少し前進しました。これでキューに接続できるようになりましたが、書き込もうとすると「camelContextを指定する必要があります」という例外が発生します

<bean id="messageConverter" class="amqp.spring.converter.XStreamConverter"/>

<rabbit:connection-factory id="connectionFactory" host="10.211.55.20" port="5672" />
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" message-converter="messageConverter" exchange="amq.fanout" />
<rabbit:admin connection-factory="connectionFactory"/>
<rabbit:queue name="hello"  />

<camel:camelContext xmlns="http://camel.apache.org/schema/spring">
    <camel:route>
        <camel:from uri="file:src/data?noop=true" />
        <camel:log message="Log!"/>
        <camel:to uri="spring-amqp:amq.fanout:hello"/>
    </camel:route>
</camel:camelContext>

ありがとう、
アンドレア

4

2 に答える 2

0

2箇所エラーがあります。まず、XML でルート上の名前空間が欠落しているようです。

<camel:route>
   <route>
        <from uri="activemq:hello?destination.consumer.exclusive=true&amp;destination.consumer.prefetchSize=50"/>
        <to uri="stream:out"/>
    </route>

次のようにする必要があります。

<camel:route>
   <camel:route>
        <camel:from uri="activemq:hello?destination.consumer.exclusive=true&amp;destination.consumer.prefetchSize=50"/>
        <camel:to uri="stream:out"/>
    </camel:route>

それから、現時点ではRabbitMQはActiveMQとあまり互換性がありません。ActiveMQ のバージョン 5.8 は、RabbitMQ が使用する AMQP プロトコルをサポートしているようですが、Camel コンポーネントでサポートされるか、RabbitMQ と互換性があるかは別問題です。知らない。

Camel にも AMQP コンポーネントがあります。Apache QPID クライアントを使用していますが、RabbitMQ で実行できませんでした。いくつかの特定のバージョンなどを使用して深く掘り下げると、ある程度機能する可能性があります (http://www.rabbitmq.com/interoperability.html)。

于 2013-01-08T07:18:13.250 に答える
0

同じ問題がありました。sを積み重ねていたことがわかりましたroute。だから、代わりに

<camel:route>
   <route>
        <from uri="activemq:hello?destination.consumer.exclusive=true&amp;destination.consumer.prefetchSize=50"/>
        <to uri="stream:out"/>
    </route>

囲んでいる をスキップするだけ<route>です。

于 2017-12-13T14:25:59.787 に答える