2013-03-09 1 views
2

는 ActiveMQ를 사이트에 this config page에 따르면, connection.sendTimeout 속성입니다 : 메시지에 대기ActiveMQConnectionFactory sendTimeout

시간은 영원히 기다릴 나타내는 0의 응답, 기본 값를 보냅니다. 영원히 기다리는 것은 브로커가 이 클라이언트에서 나오는 메시지를 흐름 제어 할 수있게합니다.이 클라이언트가 빠른 생산자이거나 생산자의 속도를 늦추지 않은 경우 브로커가 메모리를 모두 소비하지 않는 소비자는 없습니다. 브로커가 샌드를 보냄으로써 스톰프 클라이언트에 영향을 미치지 않습니다. (ActiveMQ를-CPP는 2.2.1 이후)

내가 무엇을이 의미 해석의 어려움에 봉착합니다 (sendTimeout 속성이 정말 무엇을 /이 무엇을) :

  • 무엇은 "메시지가 전송됩니다 "물건?
  • ActiveMQ가 응답을 기다리는 이유는 무엇입니까? JMS 연결의 서버 측에 있지 않습니까? 요청을 기다리지 말아야합니까?
  • 실제로 실제로 시간 제한이란 무엇입니까? 언제 사용해야합니까?

미리 감사드립니다.

답변

1

제한 시간은 브로커에 대한 클라이언트의 메시지 전송에 영향을줍니다. 전송이 비동기가 아닌 경우 클라이언트는 브로커가 메시지가 수신되어 메시지 저장소에 추가되었음을 나타내는 응답을 반환하기를 기다립니다. 브로커가 사전 설정된 메모리 제한 중 하나에 도달했기 때문에 브로커가 프로듀서 흐름 제어에 관여 한 경우 오랜 시간 동안 차단 될 수 있습니다. 클라이언트 응용 프로그램에서 보내기를 오래 기다릴 수 없으면 MessageProducer :: send가 무기한 차단하지 않도록이 시간 제한을 구성 할 수 있습니다.

메시지는 Connection이 alwaysSyncSend = true로 구성되었거나 MessageProducer가 전달 모드를 Persistent로 설정하여 전송되기 때문에 동기 모드로 전송됩니다.

일반적으로 사용 사례와 일치하는 브로커를 구성한 경우이 설정을 사용하지 않아도됩니다.

+0

고마워요 @Time Bish (+1) - 빠른 추적 : Apache Camel이이 방정식의 클라이언트 인 경우 실수로 "동기 모드"로 설정했는지 어떻게 알 수 있습니까? 즉,'ActiveMQConnectionFactory # isAlwaysSyncSend'가 true인지 'MessageProducer'가 Persistent인지 어떻게 알 수 있습니까? 다시 한 번 감사드립니다! – IAmYourFaja

+0

그건 다른 프로그래밍 언어로 된 다른 주제에 대한 다른 질문입니다. 아마도 새로운 주제를 만들 가치가있을 것입니다. –