2016-03-04 73 views
0

我對Spring AMQP模塊非常新穎。我成功地創建了生成和使用消息的簡單項目。我不明白的是:如何通過ConcurrentConsumers在spring中檢查性能改進-amqp

如果在SimpleMessageListenerContainer中只配置了一個偵聽器並配置了多個併發使用者,它將如何提高性能?根據我的理解,只要我有單個處理消息的監聽器,無論有多少消費者(線程)從隊列中接收消息都無關緊要。

這裏是我的,供大家參考代碼:在我的理解

@Bean 
public SimpleMessageListenerContainer messageListenerContainer() { 
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory()); 
container.setQueues(someQueue()); 
container.setMessageListener(messageListenerAdapter()); 
container.setConcurrentConsumers(3); 
return container; 
} 

我相信,我失去了一些東西。請有人扔光請。提前致謝。

回答

1

該容器將創建3個線程;每一個都被註冊爲消費者。這相當於創建3個獨立的容器,每個容器有1個消費者。

每個消費者都會調用您的單個偵聽器 - 它必須是線程安全的 - 不必共享數據/字段或訪問任何此類數據必須同步。

但是,通常情況下,最好使用一個無狀態的bean用於監聽器,因此您不必擔心併發性。

如果你不能讓你的偵聽器是線程安全的,你必須創建3個獨立的容器,併爲每個容器提供它自己的偵聽器實例。