간단한 대기열/음소거와 달리 활성화 된 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/759151

  •  09-09-2019
  •  | 
  •  

문제

내일 나는 프로세스 내 메시지 큐 구현을 선택한 근거를 발표하고 있으며, 추론을 표현할 수 없습니다. 내 공동 디자이너는 기본 작업 목록 만 사용하여 간단한 비동기 큐를 구현하고 액세스를 제어 할 수있는 뮤텍스를 사용하여 내장 모드에서 ActiveMQ를 제안합니다. 나는 개인적으로 ActiveMQ에 깊은 인상을 받았으며, 내 직감 인상을 뒷받침 할 좋은 논쟁을 원합니다.

중요한 경우, 응용 프로그램은 기본적으로 1 명의 생산자/N 소비자이며, 우선 순위 및 유형 정보는 처리중인 개별 작업에 맞습니다.

지금까지 솔루션의 관리 가능성과 확장 성은 강력한 주장이 아니었다는 점은 주목할 가치가 있습니다. 누군가 내 주장에 더 많은 펀치를 줄 수 있다면 나는 그것을 좋아합니다. 포럼이 저를 도와 줄 수 있습니까?

도움이 되었습니까?

해결책

동료 주장은 장점이 없습니다. 프로젝트에 ActiveMQ를 추가하면 또 다른 종속성이 추가됩니다. 사용하기가 더 복잡 할 것이며, 맞춤형 솔루션보다 더 큰 발자국을 가질 것입니다. 또한, 당신이 그것을 채택하고 있기 때문에, 버그와 모든 것을 원활하게 유지하고 계속 일하는 것은 당신의 책임이 될 것입니다.

즉, ActiveMQ (및 기타 대기열)는 스스로 쓸 수있는 일을하지만 고통 일 수 있습니다. 전체 JMS API를 지원하는 것은 그중 하나입니다 (Java를 사용한다고 가정하지만 ... 그렇지 않은 경우이 점은 유효하지 않습니다). 높은 메모리 상황에서 디스크에 과도한 메시지를 일련의 디스크로 일련시키는 것이 또 다른 것입니다. 내구성있는 가입자와 메시지 선택기는 떠오르는 몇 가지 사항입니다. 대부분의 종과 휘파람은 당신의 필요에 대한 종류의 것들이 보이지만 신뢰할 수있는 메시지 전달에 매우 중요합니다.

결정이 무엇이든간에 클라이언트 코드에서 최종 메시지 브로커의 최종 선택을 캡슐화하여 더 쉽게 전환 할 수 있습니다.

다른 팁

관리 가능성과 확장 성이 우선 순위가 높지 않다면 관리 가능한 메시지 대기열을 사용하려는 이유가 무엇인지 궁금해야합니까? 어쩌면 동료가 옳고 추가 기능 세트가 필요하지 않습니까?

이상한 엣지 케이스에서 동시성 코드를 디버그 할 필요가없는 것은 큰 이점입니다. 이 구조가 전체 프로젝트의 일부로 얼마나 중요한지는 모르겠지만 메시지 대기열이 프로젝트의 큰 부분이라면, 당신은 그것을 거두는 것입니다. 엄청난 다른 사람이 작성하고 이미 디버깅하고 귀하를 위해 유지할 수있는 구현을 사용함으로써 이점. 중요하지 않은 하위 시스템의 일회성 부분이라면 아마도 당신이 무엇을하는지는 중요하지 않을 것입니다. 그러나 그것이 중요하다면, 동시성 코드를 디버깅하는 데 시간을 보내는 것보다 버그 보고서를 제출할 것입니다 (이미 두려움에 반동하기 시작했습니다!).

짧은 버전 : NIH 증후군이 다른 사람의 작업을 사용하여 작업을 더 빨리, 더 좋고 저렴하게 수행하지 못하게하십시오. 그러나 두더지에서 산을 짓지 마십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top