2016-10-25 3 views
0

Я пытаюсь написать что-то для своего приложения iOS, используя RMQClient, который сканирует существующие обмены на сервере rabbitmq. Я придумал это до сих пор.Сканирование для кроличьего обмена от 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, если обмен уже существует с тем же именем, и вызвать ошибку, если нет.
    ...
    Если не установлено и существует обмен, сервер ДОЛЖЕН проверить, что существующий обмен имеет те же значения для полей типа, долговечности и аргументов. Сервер ДОЛЖЕН отвечать Declare-Ok, если запрошенный обмен соответствует этим полям, и ДОЛЖЕН поднять исключение канала, если нет.

Смежные вопросы