<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def publish(self, message_type, message_payload):
 """ Publish the specified object that the function automatically converts into a JSON string representation. This function use the lowered class name of the service as the AMQP routing key. For instance, if the class ``ExampleService`` inherits from the base class ``BaseService``, the methods of an instance of this class will publish messages using the routing key named ``exampleservice``. @param message_type: string representing the type of the event, more likely ``on_something_happened`. @param message_payload: an object to convert into a JSON string representation and to publish. """

        payload = json.dumps(jsonpickle.Pickler(unpicklable=False).flatten(message_payload))
        message = amqp.Message(payload)
        message.properties["delivery_mode"] = 2

        name = 'majormode.%s.%s.%s' % (settings.ENVIRONMENT_STAGE, self.service_name.lower(), message_type.lower())

        self.channel.queue_declare(queue=name, durable=True, exclusive=False, auto_delete=False)
        self.channel.exchange_declare(exchange=name, type="direct", durable=True, auto_delete=False,)
        self.channel.queue_bind(queue=name, exchange=name, routing_key=name)

        self.channel.basic_publish(message, exchange=name, routing_key=name)