저는 TIBCO EMS를 통해 요청/응답 서비스를 제공하는 서버 측 프로젝트를 진행하고 있으며이 서비스의 낮은 대기 시간뿐만 아니라 확장 성을 보관하는 모범 사례에 대한 조언을 찾고 있습니다. .NET에서이 작업을 수행하고 있지만 TIBCO EMS가 JMS 사양을 구현하고 있기 때문에 다른 JMS 구현 및 플랫폼 (Java)에 대한 조언이 적절하다고 가정합니다.TIBCO EMS (또는 다른 JMS)에서 확장 가능 요청/응답 프로세서는 어떻게 작성합니까?
현재 우리는 하나의 Connection, 하나의 Session, 하나의 Consumer를 사용하고 있고 그 단일 Consumer에서 콜백을 사용하여 메시지를 듣고 있습니다. 각 요청은 콜백 스레드에서 처리되며 다른 큐 (동 일한 세션)에서 동 기적으로 응답합니다. 이 방법은 효과가 있지만 확장되지는 않습니다. 높은 트랜잭션 속도에서도 CPU로드는 무시할 만하지만 요청 대기 시간은 계속 증가합니다.
EMS가 콜백에 대해 단일 스레드를 사용한다는 가정하에 응답을 처리하는 데 걸리는 시간은 물론 처리 시간도 다른 요청을 처리하지 못하도록 차단하지만, 가장 좋은 방법은 무엇입니까? 이 크기를 늘리는거야?
한 가지 방법은받은 스레드 풀에서 들어오는 요청의 실제 처리를 즉시 예약하는 것입니다. 이것은 신속한 수정이며 확장되지만 추가 지연 시간을 가져오고 세션 사용에 대한 스레딩 문제를 일으킬 수 있습니다. 또 다른 하나는 Session 객체 또는 심지어 Connection 객체의 수를 갖는 것입니다. 누구든지이 작업을 수행하는 모범 사례에 대한 조언을 구할 수 있습니까? 더 일반적인 사용 패턴 중 하나 여야합니다.
나는 클라이언트 승인 모드를 사용하고 있다면, 나는 메시지를 처리하고 각 스레드에서 처리 메시지를 확인하면 여러 스레드를 사용할 수 있습니까? –