#spring-boot #spring-cloud #amazon-sqs
#весенняя загрузка #spring-cloud #amazon-sqs
Вопрос:
Я пытаюсь заставить SpringCloud AWS SQS работать с пользовательским SimpleMessageListenerContainerFactory
, чтобы я мог устанавливать тайм-ауты и максимальное количество сообщений. Без пользовательских SimpleMessageListenerContainerFactory
методов, которые снабжены аннотациями с сообщениями о @SqsListener
приятном получении, которые находятся в SQS. Но когда я пытаюсь настроить пользовательский SimpleMessageListenerContainerFactory
, аннотация перестает работать.
@Bean
public SimpleMessageListenerContainerFactory simpleMessageListenerContainerFactory(AmazonSQSAsync amazonSqs) {
SimpleMessageListenerContainerFactory factory = new SimpleMessageListenerContainerFactory();
factory.setAmazonSqs(amazonSqs);
factory.setAutoStartup(true);
factory.setMaxNumberOfMessages(10);
factory.setWaitTimeOut(2000);
return factory;
}
Как я могу получить обычное поведение @SqsListener при определении пользовательского SimpleMessageListenerContainerFactory?
@Component
public class SqsMessageConsumer {
@SqsListener("incoming-data")
private void doSomething(String payload) {
System.out.println("data = " payload);
}
}
Ответ №1:
Не уверен, что вы пропустили, но есть тест именно для такого варианта использования:
@EnableSqs
@Configuration
public static class ConfigurationWithCustomContainerFactory {
@Bean
public SimpleMessageListenerContainerFactory simpleMessageListenerContainerFactory() {
SimpleMessageListenerContainerFactory factory = new SimpleMessageListenerContainerFactory();
factory.setAmazonSqs(amazonSQS());
...
return factory;
}
@Bean
public AmazonSQSAsync amazonSQS() {
return AMAZON_SQS;
}
}
Итак, @EnaqbleSqs
оно все еще здесь и SqsConfiguration
@Autowired
с вашим пользовательским SimpleMessageListenerContainerFactory
@Bean
.
Комментарии:
1. Я нашел проблему. Проблема заключалась в factory.setWaitTimeOut(2000);. Я предположил, что время исчисляется миллисекундами .. 🙂 Спасибо за помощь!!
2. Мне нужно реализовать sqslistener, используя аналогичный подход, который вы внедрили. Я попытался найти в Интернете демонстрационный пример, но не смог. не могли бы вы помочь мне реализовать ваш подход. Это было бы большим подспорьем для меня.