2016-01-21 57 views

回答

6

它仅使用Java的配置是使用无状态bean听众通常最好的做法,但如果这是不可能的,配置@Prototype范围监听器(和多个集装箱),你可以使用:

@Bean 
public SimpleMessageListenerContainer container1() { 
    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory()); 
    container.setQueueNames("test.mismatch"); 
    container.setMessageListener(new MessageListenerAdapter(listener())); 
    container.setMismatchedQueuesFatal(true); 
    return container; 
} 

... 

@Bean 
public SimpleMessageListenerContainer containerN() { 
    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory()); 
    container.setQueueNames("test.mismatch"); 
    container.setMessageListener(new MessageListenerAdapter(listener())); 
    container.setMismatchedQueuesFatal(true); 
    return container; 
} 

@Bean 
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 
public MyNotThreadSafeListener listener() { 
    return new MyNotThreadSafeListener(); 
} 

请记住,任何依赖注入MyNotThreadSafeListener也必须是原型豆。

底线是无状态豆是最好的。

+0

非常感谢Gary。 – Fab

相关问题