是否可以定义不同的SimpleMessageListenerContainerFactory @Beans并将它们用于不同的@SqsListeners?由于基本线程数取决于SimpleMessageListenerContainerFactory中设置的最大批处理大小,因此我希望能够为某些@SqsListeners配置较低的属性,这些@SqsListeners可能正在侦听未收到许多消息的队列,而其他队列@SqsListener侦听包含许多消息的队列,并为这些侦听器提供更多资源。例如
@Bean
public SimpleMessageListenerContainerFactory containerFactoryForLargeQueue(final AmazonSQSAsync amazonSqs) {
SimpleMessageListenerContainerFactory factory = new SimpleMessageListenerContainerFactory();
factory.setAmazonSqs(amazonSqs);
factory.setMaxNumberOfMessages(10);
return factory;
}
@Bean
public SimpleMessageListenerContainerFactory containerFactoryForSmallQueue(final AmazonSQSAsync amazonSqs) {
SimpleMessageListenerContainerFactory factory = new SimpleMessageListenerContainerFactory();
factory.setAmazonSqs(amazonSqs);
factory.setMaxNumberOfMessages(5);
return factory;
}
然后以某种方式将@SqsListener配置为使用一个或另一个,具体取决于它从队列中接收到的消息量。