실효 연결의 검측

클라이언트의 프로그램이 종료될 때 사용하는 자원을 닫아야 합니다.finally에서 자원을 닫는 것은 좋은 방법이다.
다음 예에서 Hornet 클라이언트가finally에서 세션 (session) 과 세션 공장 (session factory) 을 닫았습니다.
ClientSessionFactory sf = null;
ClientSession session = null;

try
{
   sf = HornetQClient.createClientSessionFactory(...);

   session = sf.createSession(...);
   
   ... do some stuff with the session...
}
finally
{
   if (session != null)
   {
      session.close();
   }
   
   if (sf != null)
   {
      sf.close();
   }
}
        

다음 예제에서는 JMS 클라이언트가 관련 리소스를 적절하게 종료하는 방법을 보여 줍니다.
Connection jmsConnection = null;

try
{
   ConnectionFactory jmsConnectionFactory = HornetQJMSClient.createConnectionFactory(...);

   jmsConnection = jmsConnectionFactory.createConnection();

   ... do some stuff with the connection...
}
finally
{
   if (connection != null)
   {
      connection.close();
   }
}
        

그러나 때때로 자원은 클라이언트에서 합리적인 닫기를 얻지 못한다.어떤 클라이언트 응용 프로그램은 끝날 때 자원을 닫는 것을 잊어버렸고, 어떤 클라이언트는 때때로 고장이 나서 프로그램이 갑자기 중단되었고, 관련 자원도 미처 닫지 못했다!
만약 상술한 상황이 발생한다면, 이 자원들은 서버에 남아 정리되지 않을 것이다.이것은 자원 유출 현상을 초래하고 최종적으로 서버 메모리가 넘치거나 다른 자원의 넘침 오류를 초래할 수 있다.
따라서 서버에서는 자원의 유출을 피하기 위해 어떤 메커니즘이 있어야 한다.무효 자원을 회수하는 것이다.잘못된 자원이 무엇인지 판단할 때 HornetQ는 클라이언트가 다시 연결되는 상황을 고려했다.네트워크가 임시로 중단된 후에 다시 정상적으로 연결될 때 클라이언트가 끊임없이 재시도를 통해 서버에 성공적으로 연결될 수 있다는 것이다.서버 측이 관련 연결 자원을 너무 일찍 지우면 클라이언트가 다시 시도하지 못할 수도 있습니다.
HornetQ의 리소스 회수는 완벽하게 구성할 수 있습니다.각 ClientSessionFactory에는 TTL을 연결하는 매개변수가 있습니다.이 매개 변수의 의미는 클라이언트의 연결이 서버에 도착하지 않았을 때 서버가 이 연결이 유효한 가장 긴 시간을 충당하는 것이다.클라이언트는 서버에서 꺼지지 않도록 시간 내에 "ping"패키지를 서버에 전송하여 연결을 유지합니다. 서버가 TTL에서 지정한 시간 내에 패키지를 받지 못하면 연결이 무효라고 생각하고 연결과 관련된 모든 세션(session)을 닫습니다.
JMS를 사용하면 HornetQConnectionFactory의 ConnectionTTL 속성은 연결의 생존 시간을 정의하는 데 사용됩니다.JMS 연결 공장을 JNDI에 배치하려면 프로필에 있는connection-ttl 매개 변수를 사용하여 연결된 TTL을 정의해야 합니다.
기본 연결 TTL 값은 60000ms, 즉 1분입니다.ConnectionTTL을 -1로 설정하면 서버가 시간 초과 연결을 감지하지 않습니다.
클라이언트가 연결 생존 시간 (TTL) 을 정하지 않으려면, 서버 측의 프로필에서connection-ttl-override 속성을 정의할 수 있습니다.기본값은 -1입니다. 서버 측의 이 속성이 잘못되었음을 나타냅니다. 즉, 클라이언트가 자신의 연결 TTL을 정의할 수 있습니다.
 
 
클라이언트 설정은 hornetq-jms에 필요합니다.xml에connection-factory를 추가합니다.connection-ttl 속성
 
서버 설정은 hornetq-configure에 필요합니다.xml에connection-ttl-override 속성 추가

좋은 웹페이지 즐겨찾기