我在做 spring 批处理项目,从数据库读取记录,然后写入rabbitmq,然后发送到 HTTP 消息网关。网关有150TPS,我需要将我的应用程序限制为 150TPS。有没有办法用弹簧批或其他更好的方法来节流?
2 回答
冉冉说
TA贡献1877条经验 获得超1个赞
你能行的:
在 Spring Batch 方面:使用 a
ItemWriteListener#beforeWrite
,使用Thread.sleep
或使用诸如Guava或Resilience4j 之类的速率限制库来延迟项目的写入在 RabbitMQ 方面:使用延迟消息插件以所需的速率延迟消息的传递。
希望这可以帮助。
BIG阳
TA贡献1859条经验 获得超6个赞
您可以通过将最大块大小定义为您的 TPS 或小于该大小来尝试使用面向块的处理。
您可以参考以下文档通过面向块的处理实现 Spring 批处理:
https://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html
希望能帮助到你...
添加回答
举报
0/150
提交
取消