gpt4 book ai didi

java - Java 中的通用 QoS 消息批处理和压缩

转载 作者:行者123 更新时间:2023-11-29 09:24:38 25 4
gpt4 key购买 nike

我们有一个用 Java 编写的自定义消息传递系统,我想实现一个基本的批处理/压缩功能,基本上在重负载下它将一堆推送响应聚合为一个推送响应。

本质上:

  • 如果我们检测到在过去一秒内发送了 3 条消息,则开始批处理响应并安排一个计时器在 5 秒内触发
  • 计时器会将接下来 5 秒内收到的所有消息响应汇总为一条消息

在我只是在 Java 中寻找它的最佳示例之前,我确信这已经实现了。我不是在寻找一个完整的消息传递层,只是在寻找基本的每秒检测消息并安排一些任务(显然我可以自己轻松编写这个我只是想将它与任何现有算法进行比较以确保我没有遗漏任何边缘情况或者我已经尽可能地简化了问题)。

是否有构建基本 QoS 批处理/节流/压缩实现的良好开源示例?

最佳答案

我们正在为高负载使用非常相似的机制。

它会像你描述的那样工作* 聚合给定时间间隔内的消息* 之后发送一个列表而不是一条消息。* 再次开始聚合。

您应该注意以下陷阱:* 如果您正在使用像 JMS 这样的事务处理消息系统,您可能会遇到麻烦,因为您的实现将无法在 JMS 事务内部发送,因此它会不断聚合。根据保存消息的数据结构的大小,这可能会耗尽空间。如果您有很长的事务发送许多消息,这可能会造成问题。* 以这种方式发送消息将发生异步,因为不同的线程将发送消息,而调用 send() 方法的线程只会将其放入数据结构中。* 以 JMS 示例为例,您应该记住,这种方法也改变了它们使用消息的方式。因为您将从 JMS 作为单个消息接收消息列表。因此,一旦您提交了这条 JMS 消息,您就提交了整个消息列表。您应该检查这是否符合您的要求。

关于java - Java 中的通用 QoS 消息批处理和压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com