2016-01-21 90 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

相關問題