2016-10-21 7 views

답변

0

receiveTimeout 속성을 참조하십시오. - 메시지가 도착할 때까지 최대 스레드 블록입니다. 예, 컨테이너를 시작한 후에 변경할 수 있지만 클라이언트 라이브러리가 스레드를 릴리스 할 때까지 적용되지 않습니다.

기본값은 5 초입니다. 메시지가 없으면 컨테이너가 즉시 반복되어 다시 수신됩니다.

값을 너무 높게 설정하면 컨테이너가 stop() 호출에 응답하지 않게됩니다.

+0

나는 메시지가 계속 들어오는 상황을 언급하고있다. 이 경우 receiveTimeout은 유용하지 않을 것이라고 생각합니다. 아이디어는 DMLC가 메시지를 소비하는 속도를 줄이는 것입니다. 호출간에 Thread.sleep과 같은 것. – user2599052

+0

그렇다면 컨테이너가 메시지 기반이므로 메시지가 도착할 때 배달되고 해당 의미로 폴링되지는 않습니다. 컨테이너는 클라이언트 라이브러리에서 계속 메시지를 수신합니다. 요청에 따라 메시지를 "끌어 오기"원한다면 대신'JmsTemplate'' receive' 메소드를 사용하십시오. –

+0

의도는 메시지가 소비되는 속도를 "제어"하는 것입니다. 예를 들어 다양한 청취자 중 동적으로 부하 분산을 수행하려는 경우 (청취자가 클러스터의 노드에 속한다고 가정) – user2599052