首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在@SqsListener中设置maxNumberOfMessages

在@SqsListener中设置maxNumberOfMessages
EN

Stack Overflow用户
提问于 2020-01-30 13:58:52
回答 1查看 200关注 0票数 0

我是一个在Java Spring中使用spring-cloud-aws-messaging的新手。

这是我当前的AwsConfig

代码语言:javascript
复制
    public AmazonSQSAsync amazonSqs(AWSCredentialsProvider awsCredentialsProvider) {
        return AmazonSQSAsyncClientBuilder.standard()
                .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(sqsEndpoint, sqsRegion))
                .withCredentials(awsCredentialsProvider)
                .build();
    }

在我的类侦听器中,我为它添加了一个注释,使其成为一个@SqsListener。我可以知道在哪里设置maxNumberOfMessages

或者它需要在AwsConfig中创建一个SimpleMessageListenerContainerFactory bean?

我希望得到一个友好的答复。

非常感谢您的帮助:D

EN

回答 1

Stack Overflow用户

发布于 2020-11-06 01:32:33

代码语言:javascript
复制
        @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;
        }

代码语言:javascript
复制
@Bean
public SimpleMessageListenerContainerFactory simpleMessageListenerContainerFactory(AmazonSQSAsync amazonSqs) {
    SimpleMessageListenerContainerFactory factory = new SimpleMessageListenerContainerFactory();
    factory.setAmazonSqs(amazonSqs);
    factory.setAutoStartup(false);
    factory.setMaxNumberOfMessages(5);
    // ...

    return factory;
}

我会试一试第二个。还没有测试过...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59979895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档