我是一个在Java Spring中使用spring-cloud-aws-messaging的新手。
这是我当前的AwsConfig
public AmazonSQSAsync amazonSqs(AWSCredentialsProvider awsCredentialsProvider) {
return AmazonSQSAsyncClientBuilder.standard()
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(sqsEndpoint, sqsRegion))
.withCredentials(awsCredentialsProvider)
.build();
}在我的类侦听器中,我为它添加了一个注释,使其成为一个@SqsListener。我可以知道在哪里设置maxNumberOfMessages
或者它需要在AwsConfig中创建一个SimpleMessageListenerContainerFactory bean?
我希望得到一个友好的答复。
非常感谢您的帮助:D
发布于 2020-11-06 01:32:33
@Override
public SimpleMessageListenerContainer createSimpleMessageListenerContainer() {
SimpleMessageListenerContainer simpleMessageListenerContainer = new SimpleMessageListenerContainer() {
@Override
protected void startQueue(String queueName, QueueAttributes queueAttributes) {
// A place to configure queue based maxNumberOfMessages
try {
if (queueName.endsWith(".fifo")) {
FieldUtils.writeField(queueAttributes, "maxNumberOfMessages", 1, true);
}
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
super.startQueue(queueName, queueAttributes);
}
};
simpleMessageListenerContainer.setAmazonSqs(amazonSqs);
return simpleMessageListenerContainer;
}@Bean
public SimpleMessageListenerContainerFactory simpleMessageListenerContainerFactory(AmazonSQSAsync amazonSqs) {
SimpleMessageListenerContainerFactory factory = new SimpleMessageListenerContainerFactory();
factory.setAmazonSqs(amazonSqs);
factory.setAutoStartup(false);
factory.setMaxNumberOfMessages(5);
// ...
return factory;
}我会试一试第二个。还没有测试过...
https://stackoverflow.com/questions/59979895
复制相似问题