0

CamelとActiveMQでSpringAsyncServletを使用しようとしています。以下のバージョンを使用しています。

    <spring.version>3.2.0.M1</spring.version>
    <camel.version>2.10.0</camel.version>
    <jetty.version>8.1.3.v20120416</jetty.version>
    <activemq.version>5.6.0</activemq.version>

サーバー(Jetty)に接続されているクライアントにメッセージをプッシュしたい。

私のラクダのルートは次のようになります。

from("mina:udp://source_machine:9998").to("activemq:myqueue");

これに基づいたSpring/Camel構成で次のようになりまし

    <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="vm://localhost:61616" />
</bean>

<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
    <property name="maxConnections" value="8" />
    <property name="maximumActive" value="500" />
    <property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>

<bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
    <property name="connectionFactory" ref="pooledConnectionFactory" />
    <property name="transacted" value="false" />
    <property name="concurrentConsumers" value="10" />
</bean>

<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="configuration" ref="jmsConfig" />
</bean>

上記の構成を使用すると、キューにメッセージを入力できます(少なくともエラーは発生しません)。ただし、このキューから読み取る方法がわかりません。

  1. Spring、Camel、Jettyを使用する場合、これはActiveMQを構成する正しい方法ですか?
  2. javax.jms.MessageListenerキューから読み取ることができるようにMessageListenerを追加/登録するにはどうすればよいですか。
  3. キューのサイズを制御して、キューを非永続的にするにはどうすればよいですか?
  4. 複数のリスナーを追加することが可能です

ありがとう。

4

1 に答える 1

0

構成はactivemqに適しています。突堤についてはわかりません。提供したスニペットにjetty構成はありません。

キャメルルートでは、fromactivemqエンドポイントを使用してキューをリッスンできます。

from( "activemq:myqueue")。to( "log:test");

ところで。私は通常、ActiveMQではなくjmsednpointを使用します。これには、ある時点で別のjmsプロバイダーに切り替える必要がある場合に簡単に切り替えることができるという利点があります。

また、connectionfactoryを使用して、Beanで独自のDefaultMessageListenerContainerを使用することもできます。これを行う方法については、春の構成を参照してくださいが、これはラクダとは何の関係もありません。

activemq構成でキューサイズを制御できます。http://activemq.apache.org/producer-flow-control.htmlを使用します。

キューを永続化しないようにすることはできませんが、送信するメッセージを永続的でないように定義することはできます。http://activemq.apache.org/how-do-i-disable-persistence.html

上記のfromエンドポイントでオプションmaxConcurrentConsumersを使用して、多くのリスナーを定義でき、1つのリスナーのスレッド数を定義することもできます。

于 2012-07-22T06:22:18.490 に答える