code: def publish(exchange, type, key, payload, options = {})
        ex = producer_exchanges[exchange] ||=
          declare_exchange(producer_channel, exchange, type, config.exchange_options)
  
        log.debug("Publishing to exchange #{exchange.inspect} via #{key.inspect}")
  
        ex.publish(payload, options.merge({
          :exchange    => exchange,
          :routing_key => key
        }))
  
        self
      end
docs: Publish a payload to the specified exchange/key pair.
  
   @param exchange [String]
   @param type [String]
   @param key [String]
   @param payload [Object]
   @return [Messaging::Producer]
   @api public