2 つのサーブレット間で単純な VM キュー テストをセットアップしようとしていますが、成功しません。問題は、予想される時間枠内に応答、OUT メッセージがないため、要求が常にタイムアウトすることです。
「org.apache.camel.ExchangeTimedOutException: OUT メッセージが 30000 ミリ秒以内に受信されませんでした。」
サーブレットは Tomcat で実行され、両方とも Apache Camel をデプロイしています。どちらのアプリもキャメル コンテキストと単純なルートを定義しています。次のような単純なルートが機能しているため、基本的なセットアップは問題ありません。
<route>
<from uri="servlet:///hello?servletName=app1" />
<transform>
<simple>Hello world</simple>
</transform>
</route>
<route>
<from uri="servlet:///hello?servletName=app2" />
<transform>
<simple>Hello world</simple>
</transform>
</route>
まず、要求されたルートが定義されていなくても同じタイムアウトが発生するため、メッセージが app2 に到達するかどうかはわかりません (app2 には VM ルートがありません)。したがって、VM キューを使用して 2 つのサーブレット間のルートを定義する方法に問題がある可能性があります。
サーブレット間のルートに問題がない場合、問題は応答がないか正しくないことにあるはずです。Web サーバーからの着信要求が inOut タイプであるため、受信側が応答を返す必要があることは理解していますが、それを達成する方法がわかりません。
web リクエストを受信する app1 のルート:
<route>
<from uri="servlet:///test?servletName=app1" />
<to uri="vm:test">
</route>
サーブレット app2 のもう一方の端:
<route>
<from uri="vm:test" />
// Tested here: output with <simple>, 'To', 'inOut'... the result is always timeout
</route>
私は Apache Camel を初めて使用するので、根本的な原因はおそらく非常に単純です。どんな助けでも大歓迎です。
問題は、2 つのサーブレット アプリ間で VM キューを設定する方法です。