Dispatch the event, sending a message to the queue using a producer.
        :param producer: optional `Producer` to replace the default one.

def dispatch(self, producer=None):
        """
        Dispatch the event, sending a message to the queue using a producer.
        :param producer: optional `Producer` to replace the default one.
        """
        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