Spring Cloud QueueMessagingTemplate#convertAndSend Batch

Bro*_*rod 5 java amazon-sqs amazon-web-services spring-cloud

我正在尝试使用 Spring Cloud 将一批项目发送到 Amazon SQS。我可以发送单个项目。但是,将它发送到队列的时间往往会乘以我发送的项目数。我基本上遵循参考文档的示例

AWS 文档中,您可以一次发送最多 10 个项目的批次。所以我的问题是 QueueMessagingTemplate 或其他 Spring Cloud 类是否允许您这样做?

此代码片段显示了我想要做什么。我不想将项目作为对象发送,因为我希望每个项目都单独放置在队列中。

@Service
@EnableConfigurationProperties(SqsConfigMappingProperties.class)
public class SqsServiceImpl implements SqsService {

    @Autowired
    String queueName;

    @Autowired
    QueueMessagingTemplate queueMessagingTemplate;

    @Override
    public void sendSqsMessage(List items) {
        //Can't really send a batch size here
        int batchSize = 10;
        queueMessagingTemplate.convertAndSend(queueName, items, 10);
    }
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*048 0

中没有专门的 convertAndSend()方法或类似的方法QueueMessagingTemplate。事实上这些QueueMessagingTemplate并没有定义这些方法,它只是继承了它们。我会使用类似于集合的包装类之类的东西,将其payload作为convertAndSend().

但还有更多。

QueueMessagingTemplate的源代码位于此存储库中。此存储库已存档(支持此新存储库)并且不再维护。在新的存储库中QueueMessagingTemplate被删除,取而代之的是SqsTemplate,并且SqsTemplate有一个sendManyAsync()方法,例如允许发送一批消息。

因此,对于开发人员来说,迁移到新的库确实更好,因为它QueueMessagingTemplate不再被维护(甚至不存在),并且SqsTemplate完全具有您想要的内容。

希望它有帮助,祝你有美好的一天:)