2016-10-25 2 views
0

rabbitmq 서버의 기존 교환을 검색하는 RMQClient을 사용하여 iOS 앱용으로 뭔가를 쓰려고합니다. 나는 이것을 지금까지 생각해 냈다.iOS에서 토끼 교환을 검색하십시오.

class AMQPExchangeScanner { 
    static func scan() { 
     let connection:RMQConnection = RMQConnection(uri: "amqp://user:[email protected]:5672", delegate: RMQConnectionDelegateLogger()) 

     connection.start() 

     for exchangeName in Foo.pastExchanges() { 
      let channel = connection.createChannel() 
      let exchange = channel.fanout(exchangeName, options: .passive) 
      "scan \(exchangeName) \(exchange)".print() 
      channel.close() 
     } 
    } 
} 

교환이 실제로 존재하는지 어떻게 판단 할 지 모르겠습니다. print() 문은 교환 객체를 인쇄합니다. 나는 콘솔에서 많은 양의 출력을 얻는다. 나는

if let exchange... { 
} 

같은 옵션 그래서 내가 할 수있는 일을 다시 얻을 것이라고 기대했다하지만 그 경우가 표시되지 않습니다. 교환이 진짜인지 아닌지를 프로그래밍 방식으로 확인하려면 어떻게해야합니까? 아니면 그 오류를 잡아? 내 자신의 연결 대리인이 필요하고 텍스트를 파싱해야합니까?

답변

0

기존 교환을 검색하는 가장 좋은 방법은 rabbitmq management HTTP API입니다. 이는 /api/exchanges입니다. (here에서 인용) 따라 설정 수동 ​​매개 변수는 선언 메소드를 호출 할 수있는 하나의 교환을 위해

다음 선언 방법

이 방법에 대한

  • 는 경우 교환을 만듭니다 교환이 존재하는 경우 해당 교환이 올 바르고 예상 된 클래스인지 확인합니다. 수동 비트 설정하면

    에 대한

  • , 교환 이미 가 같은 이름으로 존재하는 경우 선언-확인과 회신 및 오류를하지 않을 경우 제기 할 서버.
    ...
    설정되어 있지 않고 교환이 존재하면 서버는 기존 교환기가 유형, 내구성 및 인수 필드에 대해 동일한 값을 갖고 있는지 확인해야합니다. 요청 된 교환이이 필드와 일치하면 서버는 Declare-Ok로 응답해야하며 그렇지 않은 경우 채널 예외를 발생시켜야합니다 (MUST).

관련 문제