2017-04-26 7 views
0

현재 spring cachedConnectionFactory sessionCahceSize를 설정하는 프로젝트에서 sessionCacheSize가 1 (3 개 대상) 인 경우 1 개 (약 3 개)의 JMS 캐시 된 메시지 생성자를 등록하는 이유에 대한 답을 제공하십시오. 목적지?Spring JMS CachingConnectionFactory with cachedProducers 활성화

응용 프로그램 (1) 내가 유휴 캐시 생산자를 확인하고 최적화를 위해 캐시 된 생산자 퇴거의 전략으로 봐야 하는가

로 동시 스레드 크기 거래 모드에서 실행?

+0

연결 팩토리에 대한 추적 수준 로깅을 사용하면 제작자 캐싱 관련 활동을 모두 볼 수 있습니다. –

+0

예 추적을 설정 했으므로 동시 스레드가 1로 구성되어있을 때 대상 당 2 회 등록하는 것을 발견했습니다. – padminis

+0

질문을 편집하고 추적 로그를 추가하십시오. –

답변

0

추적에 스레드 이름을 표시하지 않으므로 디버그가 어려워집니다. 그러나 ...

생산자/소비자 캐시는 수준이 Session입니다. 여러 스레드에서 메시지를 보내는 경우 각 캐시 된 세션에 대해 캐시 된 생성자로 끝날 수 있습니다.

  • 스레드 1은 세션을 체크 아웃합니다 (새 제작자 캐싱). 세션을 다시 체크인합니다.
  • 스레드 2가 동일한 세션을 체크 아웃합니다. 샌드는 캐시 된 제작자를 사용합니다.
  • 스레드 1은 다른 세션을 체크 아웃합니다 (첫 번째 스레드가 사용 중이므로). send (해당 dest/session에 대한 새 제작자 캐싱)입니다. 그것은 그런 식으로 작동하지 않습니다

    세션 3 (3 대상)의

sessionCacheSize에서

  • 실이 확인; 세션은 목적지에 묶여 있지 않습니다. 그것들은 사용 된 각 대상에 대해 제작자를 캐싱하는 일반 세션입니다.

  • +0

    위의 설명을 기반으로 캐시 된 유휴 생성자를 식별하고 캐시 된 생성자를 제거하는 전략을 조사해야합니까? 최적화? – padminis

    +0

    나는 (표준 공장에서) 그렇게 할 수있는 메커니즘을 모른다. 캐시 된 제작자는 자신이 소유 한 세션만큼 오래 존재합니다. –