code: def dispatch(self, producer=None):
          
          log.info('@Event.dispatch `{}` with subject `{}`'
                   .format(self.name, self.subject))
          producer = (producer or Registry.get_producer())
          if not producer:
              raise MissingProducerError('You have not registered a Producer')
          try:
              producer.produce(self.topic, self.name, self.subject, self.data)
          except:
              fallback = Registry.get_fallback()
              fallback(self)
              raise
docs: Dispatch the event, sending a message to the queue using a producer.
          :param producer: optional `Producer` to replace the default one.