This is why I queue all my mixpanel requests on the server. I'll just re-run them once it's back up.
If we get too many messages accumulated in the queue where these jobs go, we just purge it (better lose that data than let RabbitMQ die because of memory exhaustion). Although there have to be a whole damn lot of events there for us to actually notice
So instead of using mixpanel.track from Javascript, you do an AJAX call to your own server and schedule a Celery job there.
There's an issue with passing Mixpanel's super properties to your server-side handler, but that's the general idea.