0

アプリケーションで apache camel を使用しています。私はcamelContext producerTemplateメッセージを送信するために使用します:

template.send("seda://destination")

コンシューマーは次のようになります。

from("seda://destination").process(new Processor {
    override def process(exchange: Exchange): Unit = {
        // some processing
    }
})

これは私の開発環境では問題なく動作します。しかし、プロダクションでは、プロデューサーがメッセージを送信しても、コントロールがコンシューマーに届くことはまったくありません。ログにもエラーは表示されません。これをデバッグする方法はありますか? 開発環境と本番環境の唯一の違いは、インターネット経由でサービスと通信するためにプロキシを設定していることです。

4

1 に答える 1

0

アプリケーションは基本的に、twitter ストリーミング API を使用してツイートをプルしていました。ツイートが入ってくると、キャメルの を使ってメッセージを作成していましたproducerTemplate。このメッセージを受け取った消費者がいました。このコンシューマーには、別のサービスへの http 呼び出しを行うコンポーネントがありました。しかし、私の実稼働環境では、http プロキシを介してのみ外部と通信できました。http 呼び出しを行っていたライブラリは を使用してapache commons httpClientいました。プロキシがこれに追加されていないためhttpClient、コンシューマーは 1 つのツイートのみを処理することでスタックしていました。私は最初に使用してsedaいました。に変更しましたdirectたった 1 つのツイートを処理しただけでプロセスが動かなくなったことがわかりました。主な問題は、タイムアウトやエラーが発生しないことでした。そのため、問題を絞り込むのが少し困難でした。

于 2014-07-18T02:32:28.713 に答える