2017-04-02 687 views
1

我使用AMQP春兔@RabbitListener註釋 從數量上限:神器春兔1.7.1.RELEASE 我不知道是否有配置每個隊列的方式消費者的數量? 我一直在挖掘的文件,並沒有發現任何東西,有沒有辦法在每個隊列的相關容器中配置消費者的數量? 在此先感謝。春兔AMQP @RabbitListener配置分鐘和消費者

+0

您的意思是消費者線程的數量? – notionquest

回答

2

通過container factory bean as shown in the documentation配置併發性。

@Bean 
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() { 
    SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); 
    factory.setConnectionFactory(connectionFactory()); 
    factory.setConcurrentConsumers(3); 
    factory.setMaxConcurrentConsumers(10); 
    return factory; 
} 

如果您使用Spring Boot爲您創建工廠Bean,則可以使用屬性對它們進行配置。

如果您想要固定數量的消費者,只需省略max即可。

如果您需要爲每個聽衆設置不同的設置,您需要針對每組設置使用不同的工廠。然後,您將參考特定集裝箱工廠的@RabbitListenercontainerFactory屬性。

+0

你應該加上:@RabbitListener(queues = STATUS_QUEUE_NAME,containerFactory = STATUS_LISTENER_CONTAINER_FACTORY)couse我有幾個地方使用它。 @Bean(STATUS_LISTENER_CONTAINER_FACTORY) 公共SimpleRabbitListenerContainerFactory statusListenerContainerFactory(){...} –

+0

@Gary我設置通過添加以下語句最低和最高極限: factory.setConcurrentConsumers(3); factory.setMaxConcurrentConsumers(10); 現在一次只有3個請求並行執行。我的理解是,最多10個請求應該同時執行。通過設置這2個參數。 請告訴我我錯在哪裏 – Manisha

+0

你應該問一個新問題,而不是評論現有問題。但是,不,這意味着我們從3開始,並且如果隊列中有足夠的消息,它將緩慢增加到10 **。算法[在此描述](https://docs.spring.io/spring- AMQP //參考/ HTML/_reference.html#聽者併發)。使用默認設置時,如果有足夠的消息,則每10秒會添加一個新消費者。 –