docs: def publish_message(self,
                          exchange,
                          routing_key,
                          properties,
                          body,
                          connection=None):
          """Publish a message to RabbitMQ on the same channel the original
          message was received on. If
          `publisher confirmations <https://www.rabbitmq.com/confirms.html>`_
          are enabled, the method will return a
          :class:`~tornado.concurrent.Future` that will resolve a :class:`bool`
          that indicates if the publishing was successful.
  
          .. versionchanged:: 4.0.0
              Return a :class:`~tornado.concurrent.Future` if
              `publisher confirmations <https://www.rabbitmq.com/confirms.html>`_
              are enabled. Removed the ``channel`` parameter.
  
          :param exchange: The exchange to publish to
          :type exchange: :class:`str`
          :param routing_key: The routing key to publish with
          :type routing_key: :class:`str`
          :param properties: The message properties
          :type properties: :class:`dict`
          :param body: The message body
          :type body: :class:`bytes` or :class:`str`
          :param connection: The connection to use. If it is not
              specified, the channel that the message was delivered on is used.
          :type connection: :class:`str`
  
          :rtype: :class:`tornado.concurrent.Future` or :data:`None`
  
          """
          conn = self._publish_connection(connection)
          self.logger.debug('Publishing message to %s:%s (%s)', exchange,
                            routing_key, conn.name)
          basic_properties = self._get_pika_properties(properties)
          with self._measurement.track_duration('publish.{}.{}'.format(
                  exchange, routing_key)):
              conn.channel.basic_publish(
                  exchange=exchange,
                  routing_key=routing_key,
                  properties=basic_properties,
                  body=body,
                  mandatory=conn.publisher_confirmations)
              return self._publisher_confirmation_future(
                  conn.name, exchange, routing_key, basic_properties)