如何配置自定义 Spring 云 AWS SimpleMessageListenerContainerFactory 以便它继续与 @SqsListener 一起工作
How to configure custom Spring Cloud AWS SimpleMessageListenerContainerFactory so it keeps working with @SqsListener
我正在尝试让 SpringCloud AWS SQS 使用自定义 SimpleMessageListenerContainerFactory
以便我可以设置超时和最大消息数。没有用 SQS 中的 @SqsListener
很好地拾取消息注释的自定义 SimpleMessageListenerContainerFactory
方法。但是当我尝试配置自定义 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;
}
如何在定义自定义 SimpleMessageListenerContainerFactory 时获得正常的 @SqsListener 行为?
@Component
public class SqsMessageConsumer {
@SqsListener("incoming-data")
private void doSomething(String payload) {
System.out.println("data = " + payload);
}
}
不确定您错过了什么,但是有一个针对此类用例的测试:
@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
。
我正在尝试让 SpringCloud AWS SQS 使用自定义 SimpleMessageListenerContainerFactory
以便我可以设置超时和最大消息数。没有用 SQS 中的 @SqsListener
很好地拾取消息注释的自定义 SimpleMessageListenerContainerFactory
方法。但是当我尝试配置自定义 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;
}
如何在定义自定义 SimpleMessageListenerContainerFactory 时获得正常的 @SqsListener 行为?
@Component
public class SqsMessageConsumer {
@SqsListener("incoming-data")
private void doSomething(String payload) {
System.out.println("data = " + payload);
}
}
不确定您错过了什么,但是有一个针对此类用例的测试:
@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
。