2016-11-17 29 views
4

@JmsListener注釈付きメソッドを使用して、JMSメッセージを以下のように聞きます。Spring JMS:@JmsListener注釈付きメソッドのErrorHandlerを設定します

@JmsListener(destination="exampleQueue") 
public void fetch(@Payload String message){ 
    process(message); 
} 

場合は例外で、このメソッドの実行結果、私はケースを処理するためにErrorHandlerを設定するにはどうすればよい

Execution of JMS message listener failed, and no ErrorHandler has been set. 

を記録警告しました。私は春のブートに1.3.3.RELEASE

+1

ます。http:// stackoverflowの.com/questions/8922532/jms-message-listener-failed-and-no-errorhandler-has-been-set-set – sarahTheButterFly

+0

ありがとう@sarahTheButterFly。提供されたリンクでKuchiの答えを参照して解決策を得ました。私は私の場合には少し答えを調整しました。私は下の私の答えを掲載しています – faizi

答えて

3

、ErrorHandlerのは、ここでは、この

@Bean 
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(ConnectionFactory connectionFactory, ExampleErrorHandler errorHandler) { 
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); 
    factory.setConnectionFactory(connectionFactory); 
    factory.setErrorHandler(errorHandler); 
    return factory; 
} 

@Service 
public class ExampleErrorHandler implements ErrorHandler{ 
    @Override 
    public void handleError(Throwable t) { 
     //handle exception here 
    } 
} 

詳細のように利用可能で設定することができます:Annotation-driven listener endpoints

ここに回答
0

を使用していますが、まだCachingConfigurerSupportから延びるCachingConfigurerまたはより良い自分自身を提供することで、高度なオプションにアクセスすることができ、のようなもの:

@Configuration 
@EnableCaching 
public class CachingConfiguration extends CachingConfigurationSupport { 

    @Override 
    public CacheErrorHandler errorHandler() { 
    // return your cache error handler 
    } 

} 

CacheErrorHandler javadoc

ノートを参照してください。あなたがデフォルトに満足している場合(呼び出し側に例外を返す)、指定する必要はありません。エラーメッセージは、デフォルトの実装が使用されたことを通知するためのものです。春JMSで動作するように@EnableJms@JmsListenerなどのようなアノテーションを使用している間

関連する問題