2

「送信元」エンドポイントに HTTP を使用してキャメル ルートを定義する方法は?

私の目標は、HTTP 要求があるときにメッセージが ActiveMQ キューにエンキューされるルートを定義することです。

次のルート定義を試しました:

<route>
  <from uri="http://localhost:8181/cxf/crm/customerservice/customers" />
  <to uri="activemq:queue:LOG.ME" />
</route>

ブラウザから次の URL にアクセスします。

http://localhost:8181/cxf/crm/customerservice/customers/123

Web サービスから XML 応答を受け取ったので、HTTP 要求が Web サービス "customerservice" に到達したことを確認しました。ただし、メッセージは ActiveMQ キューにエンキューされませんでした。

以下は、ActiveMQ キューからのメッセージを処理するルート定義です。

<route>
  <from uri="activemq:queue:LOG.ME" />
  <multicast>
    <pipeline>
      <bean ref="processor1" method="handle" />
      <to uri="mock:result" />
    </pipeline>
    <pipeline>
      <bean ref="processor2" method="handle" />
      <to uri="mock:result" />
    </pipeline>
  </multicast>
</route>

Bean "processor1" および "processor2" の "handle" メソッドが実行されなかったため、ActiveMQ に何もエンキューされていないことを確認しました。

「送信元」エンドポイントに HTTP を使用してキャメル ルートを定義する方法は?

ありがとう。

4

2 に答える 2

3

HTTP リクエストをリッスンする場合、Web アプリケーション内で実行している場合はサーブレットコンポーネントを使用するか、単純な http サーバーを埋め込むjettyコンポーネントを使用する必要があります。

どちらにも優れたドキュメントと例があります。

http および http4 コンポーネントはプロデューサー専用です ( <to ... />)。

于 2013-04-08T12:35:15.483 に答える
2

着信 http 要求をリッスンするために、jetty または cxf コンポーネントを使用してプロキシを設定できます。これにより、web サービスが呼び出され、メッセージが activemq に記録されます。

例えば、

from("jetty:http://localhost:8282/xxx").
     to("http://localhost:8181/cxf/crm/customerservice/customers").
          to("activemq:queue:LOG.ME");

http://localhost:8282/xxxこれで、Web サービスにアクセスするために、Web サービスを直接呼び出す代わりに、プロキシを として呼び出すことができます。cxf コンポーネントを使用してプロキシを設定することもできます。これについては十分に文書化されています。

于 2013-04-09T02:06:18.943 に答える