【发布时间】:2019-03-26 03:48:51
【问题描述】:
我在做spring批处理项目,从数据库中读取记录,然后写入rabbitmq,然后发送到HTTP消息网关。网关有 150TPS,我需要将我的应用程序限制为 150TPS。有没有办法用 spring batch 节流或任何其他更好的方法?
【问题讨论】:
标签: java spring spring-boot spring-integration spring-batch
我在做spring批处理项目,从数据库中读取记录,然后写入rabbitmq,然后发送到HTTP消息网关。网关有 150TPS,我需要将我的应用程序限制为 150TPS。有没有办法用 spring batch 节流或任何其他更好的方法?
【问题讨论】:
标签: java spring spring-boot spring-integration spring-batch
你可以做到的:
ItemWriteListener#beforeWrite,使用 Thread.sleep 或使用速率限制库(如 Guava 或 Resilience4j)延迟项目的写入
希望这会有所帮助。
【讨论】:
您可以通过将最大块大小定义为您的 TPS 或小于该值来尝试面向块的处理。
您可以参考以下文档通过面向块的处理实现 Spring 批处理:
https://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html
希望对你有帮助...
【讨论】: