【问题标题】:Spring Cloud Stream and sending messages to queue in batchesSpring Cloud Stream和批量发送消息到队列
【发布时间】:2019-02-20 03:35:36
【问题描述】:

我正在像这样向我的消息队列发送消息

 messages.forEach(message->
    sources.output().send(MessageBuilder.withPayload(message).build());

这些消息来自外部来源,可能有数千条。 我见过 Splitter,但它需要输入通道和输出通道,但我的消息是第一次进入队列,我只是在生成消息而不消耗它们,我不确定 Aggregator 将如何工作或如果它对于这样一个简单的场景来说太复杂了。

所以基本上我希望能够分批发送这些消息,而不是一一发送。 怎么可能实现?

【问题讨论】:

    标签: spring-boot spring-integration spring-cloud-stream


    【解决方案1】:

    对于一些简单的事情,您可以收集并创建 List 数据(消息或只是有效负载),然后创建一个带有 List 作为有效负载的消息并发送它。

    对于更多可配置的方法,您还可以使用Spring Integration Aggregator

    【讨论】:

    • 如果列表太大怎么办?
    • 我不知道那是什么意思。什么是“太大”?在考虑如何回答之前,需要了解很多变量。 . .你的 SLA 是什么?您使用的是什么消息系统?您的预期带宽是多少?你的硬件规格是什么等等等等。
    • 这是 GCP 上的 Pub Sub。我不知道其他细节,因为那些甚至没有提供。此外,我们的想法是尽可能使解决方案与云无关,并且我将使批量大小可配置。每条消息代表 CSV 文件中的一行,范围从 1 到 20000 行,每行最多 200 个字符,因此在最坏的情况下,它将是 4 MB。
    • 查看原始回复中提到的聚合器。无需重新发明已经经过实战考验的东西。此外,“1-20000 行,每行最多 200 个字符”在没有硬件、带宽等上下文的情况下仍然毫无意义。 .这都是相对的。
    猜你喜欢
    • 2021-06-12
    • 2017-12-06
    • 2021-04-27
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多