Bulk HTTP request queue consumer
I don't know rabbit and have only small nit-picks regarding C++.

emplace

You might consider constructing threads in place instead of moving them to vector.

Instead of:

threads.push_back(std::thread(RabbitThread));


I would try:

threads.emplace_back(RabbitThread);


clear()

Is threads.clear(); in main() necessary?

struct and null pointer

This looks like C-style struct keyword usage. It is very rare to see in C++ (not saying it is wrong). 

struct ev_loop *loop = ev_loop_new(0);


This might be also ok and looks more familiar

ev_loop *loop = ev_loop_new(0);


One more thing and this is a wild guess. Is this zero really a NULL pointer?

struct ev_loop *loop = ev_loop_new(0);


This would be more C++11 way:

struct ev_loop *loop = ev_loop_new(nullptr);


hardware_concurrency()

I really have no idea where lies bottleneck in you use case but I suspect it is not CPU bound so maybe you might utilize even much more threads.

int MaxThreads = std::thread::hardware_concurrency();