当前位置: 首页 > 知识库问答 >
问题:

如何按时间或按金额批处理事件

钱朝明
2023-03-14

我有一个事件系统,当一个特定的对象被改变时,我可以订阅它。在收到这个事件之后,我想要为这个对象执行一个任务。

同时更改多个对象是可能的。例如。如果我改变1000个对象,我将得到1000个事件。问题是,我要执行的任务处理1个对象1000次的时间比处理1000个对象1次的时间要长得多。我不能改变事件生成的方式。

所以我想的是,当我收到这些事件的时候,把它们批量起来。例如。在一个队列中收集1000个项目,并对收集到的事件中的所有对象执行任务。问题是:当只更改了999个对象时会发生什么?那么我的任务就永远不会执行。因此,我还希望排空队列,例如,在插入第一个对象后5秒。

这个特定任务有没有库?或者我必须用队列和一些逻辑自己构建这个来做我想做的事情吗?

共有1个答案

贺方伟
2023-03-14

我几乎可以肯定的是,不存在特定的lib,我曾经像您一样需要对事件使用相同的策略,创建一个队列或一个存储库来存储事件,并启动一个ScheduledExecutorService并以固定的速率运行任务来消耗事件,如果没有要消耗的事件,我就跳过执行。您甚至可以在store add方法中放一个验证,看看这个store是否有1000或更多,并且还没有被处理,这样就可以激发任务了。

 类似资料:
  • 问题内容: 好吧,所以我有4个图像视图。 当他们按下和向上时,我如何控制会发生什么 因此说: 其中一张图像被按下,textview变为1,但是当它们放开时,文本将变为0? 问题答案: 您需要使用OnTouchListener并让它在您的上监听。 例如: 这是一个看起来像的例子:

  • 总之,我希望flatMap1()和flatMap2()按照我在事件中设置的时间戳的顺序被调用。但那不是真的。

  • 请求地址 https://api.es.xiaojukeji.com/river/Invoice/charge 返回数据格式 JSON 请求方式 POST 是否需要登录 是 关于登录授权,参见 如何登录授权 访问授权限制 暂无 请求参数 名称 类型 必选 描述 client_id string yes 申请应用时分配的AppKey access_token string yes 授权后的acces

  • 我是python的新手,尝试创建一个应用程序来处理来自不同CSV文件的数据。我的应用程序总是处理第一个打开的CSV文件数据,我不知道哪里是错误的在我的代码?下面是我的示例: 示例1.CSV: ABC、DEF、GHI 1、3、7 我的应用程序将打开CSV文件,并将CSV文件的头,如ABC、DEF、GHI放入wx.listbox选择和处理一些如果你点击选择。首先打开sample1.csv看起来不错,但

  • 我仍然是Java和JavaFX的初学者,目前我正在努力寻找一种方法来阻止/中断单击按钮时发生的事件。因此,我正在构建一个程序,将产品(类)添加到TableView中。到目前为止,一切正常,产品添加成功,其参数由我的自定义函数检查,用户是否在名称/价格/金额字段中分别输入了字符串/双精度/整数值。 在我的检查功能中,当输入的值不正确时,也会打印一个错误,但我也希望这样做,以便在输入不正确的值时,3个

  • 问题内容: 如何处理Java中的同时按键? 我正在尝试编写游戏,并且需要一次处理多个按键。 当我按住一个键(假设向前移动),然后按住另一个键(例如,向左转)时,将检测到新键,但不再检测到旧键。 问题答案: 一种方法是跟踪自己当前按下了哪些键。 当您收到keyPressed事件时,将新键添加到列表中;当您收到keyReleased事件时,请从列表中删除密钥。 然后,在游戏循环中,您可以根据按键列表中