ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – Spring Reactor在发布者线程数远远高于消费者数量时受益

2019-08-30 11:18:56  阅读:182  来源: 互联网

标签:reactor java multithreading spring


我有以下用例:

> N个线程发布数据(N可以是10到1000个线程),那些线程可以发出HTTP请求,jdbc调用,只使用本地计算机进行纯java处理
> 1到M线程消耗它制作IO(发送HTTP请求,写入数据库……批量可能),这些线程不应该减慢发布者的速度. M不得超过10个线程.

N个线程可以比消费者使用它更快地发布数据,但其想法是尽量减少发布者的速度.

我已经实现了一个基于ArrayBlockingQueue的方法,其中发布者写入,并且一个线程将数据作为队列并处理它,它可以工作,但结果不是很好.

因此,我正在研究Reactor模式,特别是Spring-Reactor,看看它是否可以回应我的用例.是这样的吗?

我读 :

> https://spring.io/guides/gs/messaging-reactor/#initial =>这个似乎不符合我的用例.
> https://github.com/reactor/reactor/blob/master/reactor-core/src/test/java/reactor/core/processor/ProcessorThroughputTests.java =>似乎离我很近但需要确认

在我的情况下,发布商线程数远远高于消费者数量,这是正确的选择吗?

解决方法:

听起来您可能想要查看Reactor的PersistentQueue facility,并将您的发布者与订阅者分开.这是一个正常的Queue实现,但它使用Chronicle Queue来实现持久性,故障转移和可重放性.它也极其快速.

您基本上会让发布者从一侧将数据推送到PersistentQueue,而另一侧则将一组订户从中拉出.如果您已经在使用Queue,它可能是您当前使用的替代品.

我需要在其上写一个wiki页面来显示一些基本的使用模式.

标签:reactor,java,multithreading,spring
来源: https://codeday.me/bug/20190830/1767491.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有