added async_producer & changed message from by value to by shared_ptr to enable tx_queue in high level producer