disruptor-pattern – Java:使用Disruptor或不使用Disruptor. .
HY,
目前我正在开发一个程序,它从amq队列获取2个值并对它们执行一系列数学计算.已在我的程序订阅的amq服务器上创建了一个主题,并通过回调(侦听器)接收消息. 现在,只要消息到达,就会从SynchronizedDescriptiveStatistics对象中取出并添加两个值.在每次添加到值列表之后,重新执行整个计算序列(这实际上是要求的一部分). 我现在面临的问题是,由于我使用的是侦听器,因此在计算过程中有时会收到一条或多条消息.尽管SynchronizedDescriptiveStatistics会自行处理所有与线程相关的问题,但它会在锁定或其他内容时立即在其数字列表中添加所有等待值.虽然我的问题是添加一个值,然后对其执行calcls然后再执行第二个值. 我想出的解决方案是在我的程序中使用作业队列(而不是amq队列).通过这种方式,只要计算结束,程序就会在队列中寻找更多的工作并继续相应的工作. 由于我也在寻找效率和速度,我认为Disruptor框架可能对这个问题有好处,并且针对线程情况进行了优化.但我不确定它是否值得在我的应用程序中实现Disruptor的麻烦,因为常规标准队列可能足以满足我的目的. 我还要告诉你,需要执行计算的数据很多,并且它将继续进行,并且需要在连续方式中每次添加单个值时重复执行整个计算.因此,请记住效率和大量数据,从长远来看,您认为哪些数据有用. 等待回复. . . 问候. 解决方法
我会给出这个问题的典型答案:先测试,然后根据你的结果做出决定.
虽然你谈到效率,但你并没有特别说性能是一个基本要求.如果您对性能要求有所了解,可以使用队列模拟一个简单的原型而不是Disruptor的基本实现,并测量两者的性能. 如果一个人比另一个人好得多,那就是你的答案.但是,如果要付出更多努力,特别是如果它还没有为您提供所需的效率,或者您没有任何硬性能要求,那么这表明解决方案不是正确的. 首先测量,然后根据您的结果决定. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |