2017-01-04 2 views
1

토끼 MQ의 상태를 모니터링하기 위해 C# 콘솔 앱 (Windows 예약 된 작업)을 작성하고 있습니다. 따라서 대기열이 다운 된 경우 (서비스 중단, 연결 시간 초과 또는 기타 이유로) 알림 메일을 보냅니다. RabbitMQ .Net 클라이언트 (버전 4.1.1)를 사용했습니다. 기본적으로 CreateConnection() 성공 여부를 확인합니다.토끼 MQ가 있는지 확인하십시오

private static void CheckRabbitMQStatus() 
{ 
    ConnectionFactory factory = new ConnectionFactory(); 
    factory.Uri = "amqp://guest:[email protected]:5672/"; 
    IConnection conn = null; 
    try 
    { 
     conn = factory.CreateConnection(); 
     conn.Close(); 
     conn.Dispose(); 
    } 
    catch (Exception ex) 
    { 
     if (ex.Message == "None of the specified endpoints were reachable") 
     { 
      //send mail MQ is down 
     } 
    } 
} 

이것을 달성하는 데 올바른 방법이 있습니까? Rabbit MQ에는 몇 가지 도구와 플러그인이 있지만 C#의 간단한 솔루션이 필요합니다.

+0

'ex'의 구체적인 유형은 무엇입니까? 이후의 릴리스에서 메시지 비교가 중단 될 수 있습니다 ... –

답변

1

간단한 메시지 큐 설정 (클러스터링 또는 여러 시스템 연합 없음)이있는 경우 작동합니다.

RabbitMQ API에는 사용자와 같은 모니터링 도구에서 사용하도록 설계된 Aliveness Check가 있습니다. 실제로 메시지를 보내고받습니다. 이것은 당신보다 더 민감한 건강 검진 일 가능성이 높습니다. 여기에 마지막 항목을보십시오.

http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v2_2_0/priv/www-api/help.html

RabbitMQ 자체는 견고하다. 일반적으로 발생하는 장애 모드는 호스트가 다른 이유로 다시 부팅되는 것입니다.

참고 : Windows Marketplace의 Rob Three는 멋진 DebuggableService 템플릿을 사용합니다. 따라서 예약 된 작업이 아닌 서비스로 건강 상태를 쉽게 파악할 수 있습니다. MQ 작업을 예약 된 작업이 아닌 서비스로 리팩토링 할 때 내 인생이 쉬워졌습니다.

관련 문제