Disruptor pattern Java:是否使用中断器。

Disruptor pattern Java:是否使用中断器。,disruptor-pattern,Disruptor Pattern,Hy 目前,我正在开发一个程序,从amq队列中获取2个值,并对其执行一系列数学计算。在amq服务器上创建了一个主题,我的程序订阅该主题并通过回调(侦听器)接收消息 现在,每当消息到达时,这两个值就会从SynchronizedDescriptiveStatistics对象中取出并添加到该对象中。在每次添加到值列表后,整个计算序列都会重新执行(实际上这是要求的一部分) 我现在面临的问题是,由于我使用的是听众,有时在计算过程中会收到一条或多条消息。虽然SynchronizedDescriptiveSt

Hy

目前,我正在开发一个程序,从amq队列中获取2个值,并对其执行一系列数学计算。在amq服务器上创建了一个主题,我的程序订阅该主题并通过回调(侦听器)接收消息

现在,每当消息到达时,这两个值就会从SynchronizedDescriptiveStatistics对象中取出并添加到该对象中。在每次添加到值列表后,整个计算序列都会重新执行(实际上这是要求的一部分)

我现在面临的问题是,由于我使用的是听众,有时在计算过程中会收到一条或多条消息。虽然SynchronizedDescriptiveStatistics自行处理所有与线程相关的问题,但当它脱离锁定或其他情况时,它会立即将所有等待值添加到其数字列表中。我的问题是添加一个值,然后对其执行calcls,然后再添加第二个值,然后继续

我提出的解决方案是在我的程序中使用作业队列(而不是amq队列)。这样,每当CALC结束时,程序就会在队列中查找更多作业,并相应地继续执行

因为我也在寻找效率和速度,所以我认为Disruptor框架可能适合这个问题,它针对线程化情况进行了优化。但我不确定在我的应用程序中实现Disruptor是否值得,因为常规的标准队列可能足以满足我所要做的工作

我还要告诉你,需要进行计算的数据很多,而且会不断出现,每次连续添加一个值,都需要重新进行整个计算。因此,请记住效率和巨大的数据量,从长远来看,您认为什么是有用的

等待答复


问候。

我将给出这个问题的典型答案:先测试,然后根据结果做出决定

虽然您谈到了效率,但并没有明确指出性能是一项基本要求。如果您对您的性能需求有一个想法,那么您可以使用队列来模拟一个简单的原型,而不是基本的中断器实现,并对两者的性能进行测量

如果一个比另一个好很多,那就是你的答案。但是,如果一个解决方案需要花费更多的精力来实现,特别是如果它不能提供您所需要的效率,或者您没有任何硬性能要求,那么这表明解决方案不是正确的

首先测量,然后根据结果做出决定