def declare(type, name, options = {})
      identities = []
      brokers = options.delete(:brokers)
      each(:usable, brokers) { |b| identities << b.identity if b.declare(type, name, options) }
      logger.info("Could not declare #{type.to_s} #{name.inspect} on brokers #{each(:usable, brokers).inspect} " +
                  "when selected #{brokers.inspect} from usable #{usable.inspect}") if identities.empty?
      identities
    end
def declare(type, name, options = {})
      identities = []
      brokers = options.delete(:brokers)
      each(:usable, brokers) { |b| identities << b.identity if b.declare(type, name, options) }
      logger.info("Could not declare #{type.to_s} #{name.inspect} on brokers #{each(:usable, brokers).inspect} " +
                  "when selected #{brokers.inspect} from usable #{usable.inspect}") if identities.empty?
      identities
    end
Declare queue or exchange object but do not subscribe to it

 === Parameters
 type(Symbol):: Type of object: :queue, :direct, :fanout or :topic
 name(String):: Name of object
 options(Hash):: Standard AMQP declare options plus
   :brokers(Array):: Identity of brokers for which to declare, defaults to all usable if nil or empty

 === Return
 identities(Array):: Identity of brokers where successfully declared