2011-10-25 8 views
4

WebアプリケーションではSpringとCamelを使用しています。私たちのコントローラの1つでは、ProducerTemplateを使用してルート上でメッセージを送信しています。別のルートにメッセージを送信する別のコントローラを追加します。私はアプリケーション全体に対して1つのProducerTemplateしか持たないと理解していますか?ProducerTemplateはインスタンスが1つしかないと想定されています

thisを読んだ後少し混乱してしまったので、これを聞いてみます。あなたが与えたリンクより引用

答えて

4

あなたは、各メッセージ呼び出しのProducerTemplateを作成することを意味していません。起動時に単一のインスタンスを作成し、それを保持することを意味します。

また、ProducerTemplateの使用が終了したら、stop()メソッドを呼び出して、使用していたすべてのリソースを閉じてください。

ので、一般的なWebアプリケーションで、あなたはないなどの要求ごとにProducerTemplateを作成します。

ProducerTemplate template = camelContext.createProducerTemplate(); 

これは明白な理由のために、悪い習慣と考えられています。代わりにエンドポイントを注入する必要があります。説明hereとして@EndpointInject annotation

@EndpointInject(uri = "file:{{file.inbox}}") 
private ProducerTemplate inbox; 

を使用することによって。

2

一般に、処理中のメッセージごとに新しいProducerTemplateを作成しないでください。それは言われている、それらのいくつかを別のルート/豆/プロセッサで作成することも同様です...ちょうどその後のメッセージ要求のためにそれらをキャッシュします。

関連する問題