我工作弹簧批处理项目,从数据库读取记录,然后写入rabbitmq,然后发送到HTTP消息网关。网关有150TPS,我需要将我的应用程序限制为 150TPS。有没有办法用弹簧批或其他更好的方法节流?
你可以这样做:
- 在Spring Batch方面:使用
ItemWriteListener#beforeWrite
,使用Thread.sleep
或使用Guava或Resilience4j等速率限制库延迟项目的写入 - 在 RabbitMQ 端:使用延迟消息插件以所需的速率延迟消息的传递。
希望这有帮助。
您可以通过定义 TPS 的最大块大小或小于此大小来尝试使用面向块的处理。
您可以参考以下文档,通过面向块的处理来实现 Spring 批处理:
https://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html
希望对你有帮助...