Q에서 소비해야하며 각 메시지에 순서 키를 찍어서 순서를 표시해야합니다. 즉, 소비는 순차적 일 필요가있다. 성능/처리량 관점에서, onMessage() 메소드에서 블로킹 receive() 메소드 또는 비동기 리스너를 단일 스레드 구성으로 사용하는 것이 더 좋을까요?JMS 큐 소비자 : 동기 receive() 또는 단일 스레드 onMessage()
감사합니다.
Q에서 소비해야하며 각 메시지에 순서 키를 찍어서 순서를 표시해야합니다. 즉, 소비는 순차적 일 필요가있다. 성능/처리량 관점에서, onMessage() 메소드에서 블로킹 receive() 메소드 또는 비동기 리스너를 단일 스레드 구성으로 사용하는 것이 더 좋을까요?JMS 큐 소비자 : 동기 receive() 또는 단일 스레드 onMessage()
감사합니다.
성능 및 처리량에 영향을주는 많은 측면이 있습니다. 순수한 JMS 용어로 메시지를 가져 오는 동기화 또는 비동기 모델이 덜 효과적 일 수 있다는 사실을 명시하는 것은 실제로 불가능합니다. 응용 프로그램 작성 f}, 사용중인 다른 자원, 선택한 메시징 프로 Y 이더의 구현 W 기계 성능 W 클라이언트 W 서 v 시스템의 구성과 같은 기타 요인에 따라 달라집니다.
이 토론, Single vs Multi-threaded JMS Producer이 주제 중 일부를 다루었습니다.
시퀀스에 단일 세션 인 경우 JMS 사양은 메시지 순서화에 대해 몇 가지 보증을 제공합니다. 사양을 검토하여 전반적인 요구 사항과 일치하는지 확인하는 것이 가장 좋습니다.
종종 사람들은 메시지 생성 시간에 응용 프로그램 일련 번호를 삽입합니다. 따라서 소비자는 올바른 메시지를 순서대로 확인하고 있는지 확인할 수 있습니다. 소비 시간에 시퀀스 번호를 추가한다고해서 해당 소비자에게 도움이되지는 않습니다.
메시징에 대한 요구 사항이 엄격해질수록 전체 아키텍처가 엄격해질수록 엄격 해지며 수평 확장 성을 구현하는 것이 어렵다는 것을 명심하십시오.
답장을 보내 주셔서 감사합니다. 나는 또한 "어려운 말"이 답이라고 생각했다. 메시지 순서에 관해서는 Q 제작자가 시퀀스 키를 넣는 경우 소비자 측에서 순차적으로 수행 할 필요는 없지만 그렇게하지는 않습니다. 오라클 매핑과 마찬가지로 메시징과 주문 간의 임피던스 불일치라고 말하면서 앞으로 나아갈 것입니다. – wqt
On 옵션은 소비자가 메시지의 타임 스탬프를 볼 수 있도록 할 수 있습니다. 그러나이 기능은 비활성화 될 수 있으며 정확한 시간을 얼마나 신뢰하는지에 달려 있습니다. 그러나 그것은 소비자와 순서가 맞지 않는 무언가의 표시를 줄 수 있습니다. – Calanais