3
this question的答案解釋瞭如何在偵聽器不是線程安全的情況下在Spring AMQP中使用<rabbit:listener-container/>
的原型範圍。如何使用非線程安全的MessageListener實現併發性
另一位用戶詢問(在評論中)如何僅使用Java配置來配置相同的環境。
this question的答案解釋瞭如何在偵聽器不是線程安全的情況下在Spring AMQP中使用<rabbit:listener-container/>
的原型範圍。如何使用非線程安全的MessageListener實現併發性
另一位用戶詢問(在評論中)如何僅使用Java配置來配置相同的環境。
它僅使用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
也必須是原型豆。
底線是無狀態豆是最好的。
非常感謝Gary。 – Fab