class DefaultMQProducer extends ClientConfig implements MQProducer {

    @Override
    public SendResult send(Message msg) throws MQClientException, RemotingException, MQBrokerException, InterruptedException {
        Validators.checkMessage(msg, this);
        msg.setTopic(withNamespace(msg.getTopic()));
        return this.defaultMQProducerImpl.send(msg);
    }

    public  DefaultMQProducer();
    public  DefaultMQProducer(RPCHook rpcHook);
    public  DefaultMQProducer(final String producerGroup);
    public  DefaultMQProducer(final String producerGroup, RPCHook rpcHook, boolean enableMsgTrace,
        final String customizedTraceTopic);
    public  DefaultMQProducer(final String namespace, final String producerGroup);
    public  DefaultMQProducer(final String producerGroup, RPCHook rpcHook);
    public  DefaultMQProducer(final String namespace, final String producerGroup, RPCHook rpcHook);
    public  DefaultMQProducer(final String producerGroup, boolean enableMsgTrace);
    public  DefaultMQProducer(final String producerGroup, boolean enableMsgTrace, final String customizedTraceTopic);
    public  DefaultMQProducer(final String namespace, final String producerGroup, RPCHook rpcHook,
        boolean enableMsgTrace, final String customizedTraceTopic);

}