Hy,Java : Disruptor 또는 Not를 사용하십시오. .
현재 amq 대기열에서 2 개의 값을 가져 와서 일련의 수학적 계산을 수행하는 프로그램을 개발 중입니다. 내 프로그램이 콜백 (청취자)을 통해 메시지를 수신하고 수신하는 amq 서버에 주제가 작성되었습니다.
이제 메시지가 도착할 때마다 두 값이 SynchronizedDescriptiveStatistics 개체에서 가져와 추가됩니다. 값 목록에 추가 된 후 계산의 전체 시퀀스가 다시 수행됩니다 (이것은 실제로 요구 사항의 일부입니다).
현재 직면하고있는 문제는 청취자를 사용하고 있기 때문에 때로는 하나 이상의 메시지가 계산 중간에 수신된다는 것입니다. SynchronizedDescriptiveStatistics는 모든 스레드 관련 문제를 처리하지만 자체적으로 문제는 없지만 잠긴 값이 나올 때 모든 대기중인 값을 한 번에 숫자 목록에 추가합니다. 내 문제는 하나의 값을 추가 한 다음 그것에 calcls를 수행 한 다음 두 번째 값을 반복하는 것이 었습니다.
제가 생각해 낸 해결책은 프로그램 (amq 대기열이 아님)에서 작업 대기열을 사용하는 것입니다. 이런 식으로 계산이 끝날 때마다 프로그램은 대기열에서 더 많은 작업을 찾아 그에 따라 진행합니다.
효율성과 속도를 찾고 있기 때문에 Disruptor 프레임 워크가이 문제에 유용 할 수 있으며 스레드 된 상황에 최적화되어 있다고 생각했습니다. 그러나 정규 표준 대기열로 인해 수행하려는 작업에 충분하기 때문에 Disruptor를 구현할 때 문제가되는지 잘 모르겠습니다.
계산을 수행해야하는 데이터가 많이 있고 계속오고 있으며 전체 계산은 하나의 값을 한 번 더 추가 할 때마다 다시 수행해야합니다. 지속적인 패션. 그러므로 효율성과 엄청난 양의 데이터를 염두에 두는 것이 장기적으로 유용 할 것이라고 생각하는 것입니다.
답장을 기다리는 중입니다. . .
감사합니다.