4

私はメッセージハンドラーを持っています。これはJMSキューから消費し、結果を別のJMSキューに送信します。メッセージハンドラは、SpringDefaultMessageListenerContainerにあります。コンテナがシャットダウンしたら、すでに消費したリクエストの処理を終了して、結果を送信したいと思います。同時に、リクエストキューからの新しいメッセージを消費しなくなります。

現在、特別なシャットダウンプロビジョニングがない場合、安全なApplicationContext.registerShutdownHook()で、コンテナーは保留中のlisternerMethod呼び出しが返されるのを待ちますが、結果を応答キューに送信しません。

実行中のハンドラーによって生成された応答が応答キューに送信されるようにするための適切なアプローチは何でしょうか?

4

1 に答える 1

2

DisposableBean進むべき道は、インターフェースや@PreDestroyアノテーションを介してリードする必要があると思います。IMHOの重要な点は、SpringにDMLCをシャットダウンさせるのではなく、現在「システム内」にあるメッセージを認識しているコンポーネントによってシャットダウンさせることです。このようにして、現在処理中のメッセージが終了するのを待っている間、新しいメッセージのリッスンを停止します。

Bean宣言の属性を使用して、depends-onシャットダウンするBeanの順序を定義することもできます。これについては、Springのリファレンスドキュメントで詳しく説明しています。

于 2009-06-25T14:05:12.553 に答える